iOS10系統(tǒng)從AppStore打開崩潰問(wèn)題

前一段無(wú)意中發(fā)現(xiàn)的,剛下載好的App從AppStore點(diǎn)擊打開的時(shí)候剛啟動(dòng)就會(huì)崩潰,收集不到崩潰信息也無(wú)法復(fù)現(xiàn)這個(gè)效果。聯(lián)想到之前審核的時(shí)候出現(xiàn)的啟動(dòng)崩潰可能就是這個(gè)地方,之前的一篇文章http://m.itdecent.cn/p/30c535697269 。當(dāng)時(shí)連崩潰的現(xiàn)象都無(wú)法復(fù)現(xiàn)只好申訴通過(guò)了,現(xiàn)在找到了這個(gè)現(xiàn)象就有了點(diǎn)頭緒。
查了些資料和測(cè)試了幾個(gè)系統(tǒng)版本,做了下對(duì)比。發(fā)現(xiàn)只有iOS10及以上的系統(tǒng)才會(huì)出現(xiàn)這個(gè)現(xiàn)象,而之前的系統(tǒng)都可以正常的打開。。。查閱了一下iOS10更新的地方也查不出個(gè)所以然來(lái)。。。那就一步一步從調(diào)用的方法中找吧。
正常的流程沒有問(wèn)題就暫時(shí)排除了正常流程的方法,重點(diǎn)看下被別的App喚起和收到推送啟動(dòng)這兩個(gè)地方的方法。
被App喚起方法:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url NS_DEPRECATED_IOS(2_0, 9_0, "Please use application:openURL:options:") __TVOS_PROHIBITED;
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation NS_DEPRECATED_IOS(4_2, 9_0, "Please use application:openURL:options:") __TVOS_PROHIBITED;

上面三個(gè)App之間互相喚起的方法(有兩個(gè)iOS10之后就棄用了)并沒有做什么操作,就是支付寶微信之類的回調(diào),看了一下也不會(huì)造成什么影響,問(wèn)題應(yīng)該不是出現(xiàn)在這里。
那看下遠(yuǎn)程推送啟動(dòng)App:

- (void)receiveNotificationByLaunchingOptions:(NSDictionary *)launchOptions;

這個(gè)方法里面也沒有寫什么代碼。。。不過(guò)有個(gè)隱藏的BUG。。。并沒有判斷會(huì)不會(huì)出現(xiàn)空值

NSDictionary *userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

這里我并沒有判斷是不是為空值。。。因?yàn)橥扑投际俏覀儊?lái)的。。??隙]空值。。。直接強(qiáng)行處理userInfo中的信息了,可能造成崩潰,而且未對(duì)空值做正常啟動(dòng)的處理。當(dāng)時(shí)也是猜的,后來(lái)發(fā)現(xiàn)猜對(duì)了。。。
于是做了些修改,為空時(shí)不解析數(shù)據(jù),正常啟動(dòng)App。。。
打包上線。。。測(cè)試。。。問(wèn)題解決了。。。
猜測(cè)可能是iOS10之前的系統(tǒng)從AppStore打開時(shí)并不去調(diào)用這個(gè)方法?因?yàn)槭峭扑?。。。這種方式打開也和推送沾不上邊啊。。?;蛘呤侵耙沧撸皇强瞻?。。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,351評(píng)論 25 708
  • 因?yàn)橐Y(jié)局swift3.0中引用snapKit的問(wèn)題,看到一篇介紹Xcode8,swift3變化的文章,覺得很詳細(xì)...
    uniapp閱讀 4,877評(píng)論 0 12
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,697評(píng)論 19 139
  • 介紹一下iOS10的通知新功能,用戶體驗(yàn)的提升和開發(fā)者能夠發(fā)揮的地方非常多,使得iOS更具有競(jìng)爭(zhēng)力。 1.iOS ...
    F麥子閱讀 4,108評(píng)論 3 4
  • 家和薩提亞領(lǐng)導(dǎo)力:自我關(guān)愛分享 第5天簽到(2016.09.26) 每天堅(jiān)持一件事:冥想三十分鐘。今天冥想的過(guò)程里...
    孫麗霞閱讀 211評(píng)論 0 0

友情鏈接更多精彩內(nèi)容