2011-10-21 66 views
3

我想從我的phonegap應用程序中打開聯繫人和日曆等iphone應用程序,我不介意這樣做會將我的應用程序置於後臺。我可以打開瀏覽器並使用window.open,但是如何打開其他應用程序?如何通過電話打開iphone應用程序

window.open("contacts://", '_blank');不起作用

回答

3

一個應用程序,的PhoneGap爲主或以其他方式,可能會導致另一個應用程序啓動的唯一方法是打開使用目標應用程序的自定義URL方案的URL。所以,如果聯繫人應用程序支持一些自定義方案,那麼您很幸運。如果不是,你運氣不好。

+0

http://developer.apple.com/library/safari/#featuredarticles/iPhoneURLScheme_Reference/Introduction/Introduction.html您提到的任何感興趣的人的鏈接。謝謝。 PS nope沒有辦法。 –

1

您將需要編寫自定義PhoneGap的插件,這樣您就可以訪問你的目標C.

官方的PhoneGap文檔here編寫自定義的方法。
我將簡要解釋你將如何做到這一點。
在JavaScript中,你會調用這個代碼:

PhoneGap.exec("OpenMailAppPlugin.openMailApp",parameter1); 

在Objective C中,您將創建一個新的文件OpenMailAppPlugin類。閱讀上面的鏈接以獲取確切的指令,但重要的方法將會如此。

-(void) openMailApp:(NSMutableArray*)paramArray withDict:(NSMutableDictionary*)options { 
      NSString *parameter1 = [paramArray objectAtIndex:0]; //recieves information from javascript function 

      NSURL* mailURL = [NSURL URLWithString: @"mailto:%@[email protected]&subject=Greetings%20from%Cupertino!&body=Wish%20you%20were%20here!",paramter1]; 
     [[UIApplication sharedApplication] openURL: mailURL]; 
} 

此外,您可能感興趣的信息發送回您的PhoneGap應用程序。你可以通過注入一個發送參數的javascript調用來做到這一點。在你的目標C函數中,你會做這樣的事情。

NSString * jsCallBack = [NSString stringWithFormat:@"myJavascriptFunction('%@');",parameter];  
     [self.webView stringByEvaluatingJavaScriptFromString:jsCallBack]; 
1

正如前面回答,使用URL方案可以工作。如果你有幾個應用程序並希望能夠打開一個從其它,那麼它使用的PhoneGap構建的時候真的很簡單:你只需要add the URL scheme to your config.xml file,如:

// In config.xml 
<gap:url-scheme> 
    <scheme>app1scheme</scheme> 
</gap:url-scheme> 
從您的其他你會應用

然後只是有一個鏈接app1scheme://,如簡單地

<a href="app1scheme://">Start App1</a> 
相關問題