我在這裏有兩種情況。PhoneGap iOS自定義URL方案,當應用程序不在後臺?
一個是,我的應用程序在iPad上的背景中處於活動狀態。如果我去Safari瀏覽器並點擊一個鏈接與我的URL方案,應用程序打開並顯示一個警告與URL。
這就是我想要的!
第二種情況是應用程序處於非活動狀態而不在後臺。這裏應用程序啓動,但警報從不顯示。我可以從「didFinishLaunchingWithOptions」中提醒URL,但我需要在我的JavaScript函數中使用它:handleOpenURL(url)。
在我看來,我的AppDelegate.m中的handleOpenURL只在App在後臺時被觸發。有沒有辦法讓它在沒有在後臺運行的情況下執行相同的操作?
這裏是我的OBJ-C handleOpenUrl:
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);
}
現在,當應用程序最初啓動時,它運行didFinishLaunchingWithOptions:
NSURL* url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey];
NSString* invokeString = nil;
if (url) {
invokeString = [url absoluteString];
NSLog(@"iPaperReeder launchOptions = %@", url);
}
self.viewController.invokeString = invokeString;
我應該修改didFinishLaunchingWithOptions方法,使其運行handleOpenURL ?
爲InvokeString錯誤獲取錯誤:物業invokeString不是類型CDVViewController – 2015-02-17 13:20:57
的對象中找到@Turan嘗試閱讀這篇文章,主要是關於部分「修復警告」:HTTPS://iphonedevlog.wordpress。 com/2012/09/24/phonegap-2-1-0-mac-os-x-mountain-lion-10-8-from-download-to-ios-app-store/ – casper60 2015-02-18 14:16:09