这是我的应用场景:当用户滑动通知时,我将通过 URL 启动其他一些应用。 所以它基本上在通知到达时启动一些其他应用。
目前处理滑动通知场景,什么时候
- (BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)
方法被调用,在这个方法中,我调用了processNotification:
方法,它包含:
...
[[UIApplication sharedApplication] openURL:url];
...
- 如果在应用程序处于事件状态时收到推送,
url
可以正常打开。 - 如果通过滑动或点击通知收到推送,
url
会在后台打开,但当前查看的应用程序是我的应用程序。例如,如果我的url
是tel:123-456-7890
,iOS 开始通话(您可以听到声音)但事件应用不是Phone.app
,这是我的应用程序。
我觉得这很奇怪。但是,如果我等待 UI 加载,然后调用 processNotification:
,它会正确显示 Phone.app
窗口。 (平台错误?因为调用发生了,但我的用户界面在顶部。)
我需要一种方法来延迟执行此 processNotification:
调用(可能通过操作队列),直到加载 View Controller 。否则,我的应用程序会保持在最前面,而 URL 会在后台打开。
最佳答案
我遇到了同样的问题,我将 openURL
移到了 main_queue
中,它似乎工作正常。我什至不必在 didBecomeActive
dispatch_async(dispatch_get_main_queue(), ^(void){
[[UIApplication sharedApplication] openURL:url];
});
关于ios - 通过 didFinishLaunchingWithOptions 通过远程推送启动应用程序时延迟 openURL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19389089/