我这里有两种情况。
一是,我的应用程序在我的 iPad 上处于后台活动状态。如果我去 safari 并单击带有我的 URL 方案的链接,应用程序将打开并显示带有 URL 的警报。
这就是我要的!
第二种情况是应用程序处于非活动状态,而不是在后台。应用程序在此处启动,但从未显示警报。我可以从“didFinishLaunchingWithOptions”中提醒 URL,但我需要在我的 JavaScript 函数中使用它:handleOpenURL(url)。
在我看来,我的 AppDelegate.m 中的 handleOpenURL 仅在应用程序处于后台时才会触发。有没有办法让它在不在后台运行时做同样的事情?
这是我的 obj-c 句柄OpenUrl:
if (!url) { return NO; }
// calls into javascript global function 'handleOpenURL'
NSString* jsString = [NSString stringWithFormat:@"window.setTimeout(function(){ handleOpenURL(\"%@\"); }, 1)", url];
[self.viewController.webView stringByEvaluatingJavaScriptFromString:jsString];
// all plugins will get the notification, and their handlers will be called
[[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:CDVPluginHandleOpenURLNotification object:url]];
return YES;
它应该输出到这个 javascript 函数:
function handleOpenURL(url) {
alert('invoke: ' + url);
}
现在,当 App 最初启动时,它会运行 didFinishLaunchingWithOptions:
NSURL* url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey];
NSString* invokeString = nil;
if (url) {
invokeString = [url absoluteString];
NSLog(@"iPaperReeder launchOptions = %@", url);
}
self.viewController.invokeString = invokeString;
我应该修改 didFinishLaunchingWithOptions 方法,使其运行 handleOpenURL 吗?