最近在開(kāi)發(fā)過(guò)程中遇到一個(gè)很奇葩的問(wèn)題,每次點(diǎn)擊推送進(jìn)入應(yīng)用內(nèi)跳轉(zhuǎn)頁(yè)面之后,點(diǎn)擊返回的時(shí)候總是點(diǎn)擊兩次才能回到首頁(yè),由于這個(gè)問(wèn)題不能通過(guò)一般的手段定位問(wèn)題,一度讓我有點(diǎn)苦惱,后來(lái)才發(fā)現(xiàn)了原因:
iOS 10之后蘋(píng)果官方新添加了兩個(gè)關(guān)于接收推送的方法:
而在iOS 10之前當(dāng)應(yīng)用被殺死之后點(diǎn)擊推送進(jìn)入應(yīng)用,需要在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;方法內(nèi)添加處理推送的方法來(lái)響應(yīng)推送的點(diǎn)擊事件。iOS 10之后,無(wú)論應(yīng)用是否被殺死,點(diǎn)擊推送進(jìn)入應(yīng)用都會(huì)調(diào)用上圖新增的方法。因此在iOS 10之后系統(tǒng)就遇到了前面所說(shuō)的問(wèn)題:由于點(diǎn)擊推送的時(shí)候,系統(tǒng)調(diào)用了新增的方法處理推送的點(diǎn)擊方法,然后又調(diào)用了didFinishLaunching里的方法。。。。
很簡(jiǎn)單的解決辦法:需要在didFinishLaunching里關(guān)于推送響應(yīng)事件的處理加上版本判斷,在iOS 10之后不調(diào)用此方法。