笔者目前大二软件工程在读,之前只做过javaee的web系统大作业,对iOS开发可以说是一点不懂。但是和老师同学们吹下牛了,暑假要做个跑步app,先替代校园跑,然后深挖游戏性,研究算法申请专利做互联网+。
用的语言是swift,没有使用swiftui,使用swiftui的可以参考这个视频
https://live.csdn.net/v/141526
首先是尝试接入高德的sdk,利用高德的sdk可以实现对运动检测的相关功能,并且高德官方也提供相应的demo,仿照着学习https://lbs.amap.com网站在这。
官方的文档写的蛮详细了。我选择的是自动部署,在终端输入这些,命令
cd /xxxxxxx/xxx/xxx/xxx.codeproj可以直接把工程文件拖进来,cd …后pod init 生成podfile文件,open …打开文件夹
在podfile里写入要导入的包,我导入的是2dmap和location
然后cmd+S保存后终端输入,pod update,这里要注意podfile里的pod首字母不要大写。
包导入成功后回到Xcode,在info.plist中配置权限
这个配置完后才会弹窗说请求定位这些。
从这里开始就与swiftui不一样了。
要创建桥接文件,file->new->file选择iOS,Header file。我的命名是RunDemo_Bridge.h
创建完后点击蓝蓝的那个工程文件targets->build Settings下搜索bridg会看到这个
注意看objective那一栏,双击输入$(SRCROOT)/(你设置的桥接文件的名字).h
保存后在这个文件里导入头文件,这里和高德的文档一样
这里可以测试一下
ViewController.swift
import UIKit class ViewController: UIViewController, MAMapViewDelegate { override func viewDidLoad() { super.viewDidLoad() let mapView = MAMapView(frame: self.view.bounds) mapView.delegate = self self.view.addSubview(mapView) } }
这是修改后的AppDelegate.swift文件
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. AMapServices.shared().apiKey = "你申请的Key" return true }
这样配置好后是可以在模拟器上看到地图了,如果要实机测试的话,可能会出现问题
这个问题
这是因为你的Bundle Identifier不是唯一的,你可以试着脸滚键盘输些乱码看看能不能部署到手机
当出现这个问题的时候,回到targets,general里面
我这里已经删掉了。
第一次尝试写这种贴代码的博客,很不成熟,很多报错应该及时复制下来,方便大家查bug检索。
一起进步叭,路漫漫其修远兮,吾将上下而求索
定位自己的位置下回补上,其实已经实现了在我手机中,但是那个项目是swiftui的,晚上考虑到swiftui或许还不够成熟,之后项目做大了可能支持不来,就先重构了。说实话swiftui我真的爱了,那体验可以说是低代码开发的雏形,就像游戏引擎一样,不过现在还是让它再飞一会,之后或许会拿出来做些小项目。