在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。優化
咱們知道,在Xcode7後,開發者能夠不用花99dollars去購買開發者帳號而能夠在本身的iphone上進行測試。在安裝這些應用時,iOS9系統再也不向之前那樣,再安裝時提示一個信任的按鈕,而是作以下的提示:ui
在設置中,選擇描述文件:spa
以後選擇開發者對應的appleId,選擇信任便可:.net
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,以下:
在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個。
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