用Swift重写公司OC项目(Day2--swift如何调用OC类库,swift开发之百度地图的集成以及如何关闭ATS)

来源:转载

接上一片博文,我们已经创建好了桥接文件.那么如何调用?

在项目最开始的时候,我写了这个项目使用cocoapod管理依赖库,在这里,还是多记录一下吧.

1 在你的已经安装好cocoapod的电脑上,打开终端,输入pod search baidumapapi ,得到的结果如下:

剪头中的就是我们需要的,然后在我们的项目中的podfile中把pod 'BaiduMapAPI' '~>2.8.1'加进去并且保存

2 加好了类库当然需要安装到项目中,所以输入pod install,等待安装完毕

3 重新打开项目,发现项目结构变成如下模样:

  

 然后打开我们的桥接文件,引用百度地图的头文件

 

command + B 试试是否编译成功,成功就可进行下一步了.

4 本来项目开始应该进入的是首页,但是上面既然写了如何使用百度地图API,那么就直接写在这里,后面写到使用百度地图的页面就不写了..

   代码如下:

   ① 首先在appdelegate里添加红色框框里的代码,里面剪头部分需要你到百度官网拿项目的bundle identify来生成一个key,不要按照我这个写啊

       

    ②  然后在控制器里代码如下:

     

import UIKit

 

class ViewController: UIViewController ,BMKMapViewDelegate ,BMKLocationServiceDelegate{

    

    var mapView: BMKMapView!

    var locService: BMKLocationService!

    

    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.

        mapView = BMKMapView(frame: self.view.frame)  //创建地图的view

        self.view = mapView   //让百度地图的view成为控制器的view

        

        //设置定位精准度

        BMKLocationService.setLocationDesiredAccuracy(kCLLocationAccuracyBest)

        //指定最小距离更新,单位是米

        BMKLocationService.setLocationDistanceFilter(10)

        

        //初始化定位服务

        locService = BMKLocationService()

        //启动定位服务

        locService .startUserLocationService()

        

        mapView.showsUserLocation = false

        //设置位置跟踪态

        mapView.userTrackingMode = BMKUserTrackingModeNone

        //显示定位图层

        mapView.showsUserLocation = true

        //设置是否支持多点(缩放)

        mapView .zoomEnabled = true

        //手机比例尺中可以显示的级别  最高为19

        mapView .zoomLevel = 19

    }

    

    //定位代理

    //用户方向更改后

    func didUpdateUserHeading(userLocation: BMKUserLocation!) {

        mapView.updateLocationData(userLocation)

    }

    

    //位置更新后

    func didUpdateBMKUserLocation(userLocation: BMKUserLocation!) {

        mapView.updateLocationData(userLocation)

        //移动定位的位置到屏幕中间

        mapView .setCenterCoordinate(userLocation.location.coordinate, animated: true)

    }

    

    override func viewWillAppear(animated: Bool) {

        mapView.viewWillAppear()

        mapView.delegate = self   //在控制器view将要显示的时候设置mapview以及定位的Locservice的代理为控制器

        locService.delegate = self

    }

    

    override func viewWillDisappear(animated: Bool) {

        mapView.viewWillDisappear()

        mapView.delegate = nil    //在控制器view将要消失的时候设置mapview以及定位的locservice的代理为nil ,具体原因去查看百度地图的api,里面有说明

        locService.delegate = nil

    }

 

 5 代码写完之后,当你运行程序可能发现无法进行定位,那么这个有可能是你的plist文件少加入了一些东西,一起发上来;

这里二选一的,我选择的一直在后台运行,也可以选择另外一个属性,使用时候运行,至于key我不太记得了.自己在百度地图论坛可以找到.

 这里顺带说一下,在iOS9之后,苹果开启了ATS,这个服务其实是需要https支撑的,估计苹果的目的也就是反向逼迫开发者们增强自己的APP安全,但是有时候公司是不想花钱去买那个HTTPS的证书,毕竟国人都喜欢免费的,有http可以用,为什么要一年花一两千去买个证书呢?所以这里有一个方法关闭ATS,也是在plist文件里添加.如下;

设置这个之后,一些AFN之类的第三方类库又可以正常使用了.

今天内容完毕..明天继续...

 


分享给朋友:
您可能感兴趣的文章:
随机阅读: