iOS9系列專題6——iOS9其餘適配注意點

iOS9適配注意點

1、後臺定位類app適配點

        在iOS8中,APP的定位服務apple就作了一些修改,須要用戶申請相應的權限,並在info.plist文件中添加對應的鍵值。具體的作法在這篇博客中有詳細的講解:http://my.oschina.net/u/2340880/blog/414760安全

        在iOS9系統中,定位服務的作法基本沒有改變,對於前臺的定位沒有影響,但app中若是須要後臺定位,那麼還須要多作一些操做,例如:app

    manager = [[CLLocationManager alloc]init];
    //申請後臺定位權限
    [manager requestAlwaysAuthorization];
    manager.delegate=self;
    //=======================================
    //下面這個是iOS9中新增的方法 開啓後臺定位
    manager.allowsBackgroundLocationUpdates = YES;
    //======================================
    [manager startUpdatingLocation];

 

經過上面簡單的配置直接運行的話,程序會崩潰掉,還須要在plist文件中作一些配置,兩種方式:iphone

方式一:直接在plist文件中配置以下:測試

方式二:在項目中設置字體

打開background Models選項,勾選其中的Location updates。優化

2、安裝不受信任的開發者應用

        咱們知道,在Xcode7後,開發者能夠不用花99dollars去購買開發者帳號而能夠在本身的iphone上進行測試。在安裝這些應用時,iOS9系統再也不向之前那樣,再安裝時提示一個信任的按鈕,而是作以下的提示:ui

在設置中,選擇描述文件:spa

以後選擇開發者對應的appleId,選擇信任便可:.net

 

          

3、BitCode的配置

        BitCode是app的一種中間形式,在iOS9系列專題的前幾篇,有對其的簡單介紹,舉個例子,咱們能夠在提交app時提交app的bitcode形式,如此一來,apple會對咱們的app進行二次優化,在用戶下載時根據所需再進行編譯打包。在Xocde7中,新建的項目是默認開啓BitCode的,若是咱們用Xcode7編譯提交應用,這裏有須要注意適配的地方。code

        若是要支持BitCode,須要保證全部的SDK都支持BitCode,若是要更新舊的SDK,只須要在Xcode7上開啓BitCode從新制做一遍便可。

        若是不能使全部SDK都支持BitCode,能夠在項目中關閉BitCode,在building Setting中搜索BitCode,將enable設置爲NO,以下:

4、URL Scheme白名單

        在iOS9中,apple引入了白名單這個概念,其好處是對app應用內安全進行了增強。在iOS9的適配中,若是咱們用到canOpenURL這樣的方法,則須要配置白名單。

首先,咱們建立一個測試工程,什麼都不用作,只須要添加一個URL Scheme:

在另外一個工程中,咱們寫以下代碼:

 BOOL can= [[UIApplication sharedApplication]canOpenURL:[NSURL URLWithString:@"TEST://"]];
    NSLog(@"%d",can);
    [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"TEST://"]];

 

在沒有配置白名單以前,打印以下:

能夠看到,bool值返回的是NO。雖然這樣也能夠跳轉相應的APP,可是canOpenURL這個方法至關於失效了,咱們不能用它來判斷用戶到底裝沒裝這個app。

適配時,咱們在plist文件中添加以下鍵值:

這時再次運行程序,canOpenURL的判斷就會準確了。

注意:白名單添加上限爲50個。

5、label默認字體不一樣產生的BUG

        iOS9的另外一變化是label的默認字體產生了變化,咱們打印iOS9中label的字體以下:

iOS8中的label默認字體以下:

這兩種字體的最大差別是字間距不一樣,例如以下一段代碼:

    UILabel * label = [[UILabel alloc]init];
    label.frame=CGRectMake(100, 100, 100, 30);
    [self.view addSubview:label];
    label.backgroundColor= [UIColor redColor];
    label.text=@"1111111111111";

 

這段代碼在iOS9上是恰好能夠正常顯示的,在iOS8上則不行,以下:

iOS9:

iOS8:

適配注意點:

一、能夠經過動態計算來獲取label的寬度,進行設置label的寬度

二、一個更簡單的方法是經過設置一個肯定的字體,來進行適配

 

專一技術,熱愛生活,交流技術,也作朋友。

——琿少 QQ羣:203317592

相關文章
相關標籤/搜索