天天看點

ios10 适配相關問題

            随着ios10的出現,我們在使用過程中發現了許多問題,有時候莫名其妙的就程式崩潰了,這時候我們的心裡就跟着崩潰了,在這裡我就來總結一下我在使用ios10中出現的問題.

           1.代碼注釋不能使用的問題:

            這個是因為蘋果解決xcode ghost,把插件屏蔽了。

             解決方法

             打開終端,指令運作: sudo /usr/libexec/xpccachectl

             然後必須重新開機電腦後生效 

             注意:Xcode8内置了開啟注釋的功能,位置在這裡

ios10 适配相關問題

             2.權限及相關設定

           麥克風權限: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 我們需要通過您的地理位置資訊擷取您周邊的相關資料

           我們需要打開info.plist檔案添加相應權限的說明,否則程式在iOS10上會出現崩潰。

             具體如下圖:

ios10 适配相關問題

        3.屏蔽控制台列印雜亂無章的資訊

        屏蔽的方法如下:

            Xcode8裡邊 Edit Scheme-> Run -> Arguments, 在Environment Variables裡邊添加

            OS_ACTIVITY_MODE = Disable

ios10 适配相關問題

        4.推送          所有的推送平台,不管是極光還是什麼的,要想收到推送,這個是必須打開的.               

ios10 适配相關問題

              5.隐私資料的通路

        你的項目中通路了隐私資料,比如:相機,相冊,聯系人等,在Xcode8中打開編譯的話,統統會crash,

            要想解決這個問題,隻需要在info.plist添加NSContactsUsageDescription的key, value自己随意填寫就可以,這裡列舉出對應的key(Source Code模式下):

<!-- 相冊 --> 
<key>NSPhotoLibraryUsageDescription</key> 
<string>App需要您的同意,才能通路相冊</string> 
<!-- 相機 --> 
<key>NSCameraUsageDescription</key> 
<string>App需要您的同意,才能通路相機</string> 
<!-- 麥克風 --> 
<key>NSMicrophoneUsageDescription</key> 
<string>App需要您的同意,才能通路麥克風</string> 
<!-- 位置 --> 
<key>NSLocationUsageDescription</key> 
<string>App需要您的同意,才能通路位置</string> 
<!-- 在使用期間通路位置 --> 
<key>NSLocationWhenInUseUsageDescription</key> 
<string>App需要您的同意,才能在使用期間通路位置</string> 
<!-- 始終通路位置 --> 
<key>NSLocationAlwaysUsageDescription</key> 
<string>App需要您的同意,才能始終通路位置</string> 
<!-- 月曆 --> 
<key>NSCalendarsUsageDescription</key> 
<string>App需要您的同意,才能通路月曆</string> 
<!-- 提醒事項 --> 
<key>NSRemindersUsageDescription</key> 
<string>App需要您的同意,才能通路提醒事項</string> 
<!-- 運動與健身 --> 
<key>NSMotionUsageDescription</key> <string>App需要您的同意,才能通路運動與健身</string> 
<!-- 健康更新 --> 
<key>NSHealthUpdateUsageDescription</key> 
<string>App需要您的同意,才能通路健康更新 </string> 
<!-- 健康分享 --> 
<key>NSHealthShareUsageDescription</key> 
<string>App需要您的同意,才能通路健康分享</string> 
<!-- 藍牙 --> 
<key>NSBluetoothPeripheralUsageDescription</key> 
<string>App需要您的同意,才能通路藍牙</string> 
<!-- 媒體資料庫 --> 
<key>NSAppleMusicUsageDescription</key> 
<string>App需要您的同意,才能通路媒體資料庫</string>
           

     如果不起作用,可以請求背景權限,類似于這樣:

<key>UIBackgroundModes</key>
<array> 
<!-- 在這裡寫上你在背景模式下要使用權限對應的key --> 
<string>location</string>
...
</array>
           

        或者在Xcode裡選中目前的target,選擇Capabilities,找到Background Modes,打開它,在裡面選擇對應權限      

ios10 适配相關問題
iOS