適配iOS 10以及Xcode 8(轉載)

1、證書管理web

用Xcode8打開工程後,比較明顯的就是下圖了,這個是蘋果的新特性,能夠幫助咱們自動管理證書。建議你們勾選這個Automatically manage signing(Ps.可是在beat2版本我用的時候,徹底不能夠,GM版本居然神奇的又好了。)xcode

01.png

下面我來講說可能會出現的問題:app

1.Xcode未設置開發者帳號狀況下的截圖ide

02.png

解決辦法是:你們在Xcode的偏好設置中,添加蘋果帳號,便可。佈局

2.設備機器未添加進開發者的Device狀況下的截圖學習

03.png

解決辦法是:你們在官網將設備添加進開發機後,陪下描述文件從新下個描述文件便可。字體

3.正常狀況:Xcode配置登陸開發者帳號後的圖片,耐心等待便可。spa

04.png

等待完成以後的圖插件

05.png

2、Xib文件的注意事項debug

使用Xcode8打開xib文件後,會出現下圖的提示。

06.png

你們選擇Choose Device便可。
以後你們會發現佈局啊,frame亂了,只須要更新一下frame便可。以下圖

07.png

注意:若是按上面的步驟操做後,在用Xcode7打開Xib會報一下錯誤,

08.png

解決辦法:須要刪除Xib裏面

4.png

這句話,以及把5.png中的toolsVersion和6.png中的version改爲你正常的xib文件中的值
,不過不建議這麼作,在Xcode8出來後,但願你們都快速上手,全員更新。這就跟Xcode5到Xcode6同樣,有變更,可是仍是要儘早學習,儘快適應喲!

3、代碼及API注意

使用Xcode8以後,有些代碼可能就編譯不過去了,具體我就說說我碰到的問題。
1.UIWebView的代理方法:
**注意要刪除NSError前面的 nullable,不然報錯。

1
2
3
4
- (void)webView:(UIWebView *)webView didFailLoadWithError:(nullable NSError *)error
{
     [self hideHud];
}

4、代碼註釋不能用的解決辦法

這個是由於蘋果解決xcode ghost,把插件屏蔽了。
解決方法
打開終端,命令運行:  sudo /usr/libexec/xpccachectl
而後必須重啓電腦後生效

注意:Xcode8內置了開啓註釋的功能,位置在這裏

707724-9ace6550ccedaa6c.png

快捷鍵的設置在這裏

707724-ed9730ab858c08a7.png

貌似Xcode8取消了三方插件的功能,具體能夠查閱下Xcode8 Source Editor

5、權限以及相關設置

注意,添加的時候,末尾不要有空格
咱們須要打開info.plist文件添加相應權限的說明,不然程序在iOS10上會出現崩潰。
具體以下圖:

707724-d118ca12029c78ab.png

麥克風權限:Privacy - Microphone Usage Description 是否容許此App使用你的麥克風?
相機權限: Privacy - Camera Usage Description 是否容許此App使用你的相機?
相冊權限: Privacy - Photo Library Usage Description 是否容許此App訪問你的媒體資料庫?通信錄權限: Privacy - Contacts Usage Description 是否容許此App訪問你的通信錄?
藍牙權限:Privacy - Bluetooth Peripheral Usage Description 是否許允此App使用藍牙?

語音轉文字權限:Privacy - Speech Recognition Usage Description 是否容許此App使用語音識別?
日曆權限:Privacy - Calendars Usage Description 是否容許此App使用日曆?

定位權限:Privacy - Location When In Use Usage Description 咱們須要經過您的地理位置信息獲取您周邊的相關數據
定位權限: Privacy - Location Always Usage Description 咱們須要經過您的地理位置信息獲取您周邊的相關數據
定位的須要這麼寫,防止上架被拒。

6、字體變大,原有frame須要適配

經有的朋友提醒,發現程序內原來2個字的寬度是24,如今2個字須要27的寬度來顯示了。。
但願有解決辦法的朋友,評論告我一下耶,謝謝啦

7、推送

以下圖的部分,不要忘記打開。全部的推送平臺,不論是極光仍是什麼的,要想收到推送,這個是必須打開的喲??

11.png

以後就應該能夠收到推送了。另外,極光推送也推出新版本了,你們也能夠更新下。

PS.蘋果此次對推送作了很大的變化,但願你們多查閱查閱,處理推送的代理方法也變化了。

4.png

iOS10收到通知再也不是在
[application: didReceiveRemoteNotification:]方法去處理, iOS10推出新的代理方法,接收和處理各種通知(本地或者遠程)

1
- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler {  //應用在前臺收到通知 NSLog(@"========%@", notification);}- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler { //點擊通知進入應用 NSLog(@"response:%@", response);}

稍後我會更新文章,對推送作一個詳細的講解。

8.屏蔽雜亂無章的bug

更新Xcode8以後,新創建工程,都會打印一堆莫名其妙看不懂的Log.
如這些

1
subsystem: com.apple.UIKit, category: HIDEventFiltered, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1,

屏蔽的方法以下:
Xcode8裏邊 Edit Scheme-> Run -> Arguments, 在Environment Variables裏邊添加
OS_ACTIVITY_MODE = Disable

36.png

若是寫了以後仍是打印log,請從新勾選對勾,就能夠解決了。

Ps.考慮到添加上述內容在Xcode8後,真機調試可能出現異常,你們能夠自定義一個宏定義,來作日誌輸出。

1
2
3
4
5
6
7
8
9
10
11
#ifdef DEBUG
 
#define DDLOG(...) printf(" %s\n",[[NSString stringWithFormat:__VA_ARGS__]UTF8String]);
#define DDLOG_CURRENT_METHOD NSLog(@"%@-%@", NSStringFromClass([self class]), NSStringFromSelector(_cmd))
 
#else
 
#define DDLOG(...) ;
#define DDLOG_CURRENT_METHOD ;
 
#endif
相關文章
相關標籤/搜索