最近在开发过程中遇到一个很奇葩的问题,每次点击推送进入应用内跳转页面之后,点击返回的时候总是点击两次才能回到首页,由于这个问题不能通过一般的手段定位问题,一度让我有点苦恼,后来才发现了原因:
iOS 10之后苹果官方新添加了两个关于接收推送的方法:
而在iOS 10之前当应用被杀死之后点击推送进入应用,需要在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;方法内添加处理推送的方法来响应推送的点击事件。iOS 10之后,无论应用是否被杀死,点击推送进入应用都会调用上图新增的方法。因此在iOS 10之后系统就遇到了前面所说的问题:由于点击推送的时候,系统调用了新增的方法处理推送的点击方法,然后又调用了didFinishLaunching里的方法。。。。
很简单的解决办法:需要在didFinishLaunching里关于推送响应事件的处理加上版本判断,在iOS 10之后不调用此方法。