我希望您可以在我的PhoneGap应用程序中打开iPhone应用程序,例如联系人和日历。即使这样做会将我的应用置于后台,我也不介意。我可以使用window.open打开浏览器,但如何打开其他应用程序呢?例如,
window.open("contacts://", '_blank');
并不起作用。唯一可以让一个应用程序(基于PhoneGap或其他)启动另一个应用程序的方式是打开一个使用目标应用程序自定义URL方案的URL。因此,如果联系人应用程序支持某些自定义方案,那么您很幸运。否则,就没有办法了。
你需要编写一个自定义的 PhoneGap 插件,以便访问你在 Objective-C 中编写的自定义方法。
官方的 PhoneGap 文档在 这里。
我将简要解释如何完成此操作。
在你的 JavaScript 代码中,你将调用以下代码:
PhoneGap.exec("OpenMailAppPlugin.openMailApp",parameter1);
-(void) openMailApp:(NSMutableArray*)paramArray withDict:(NSMutableDictionary*)options {
NSString *parameter1 = [paramArray objectAtIndex:0]; //recieves information from javascript function
NSURL* mailURL = [NSURL URLWithString: @"mailto:%@?cc=bar@example.com&subject=Greetings%20from%Cupertino!&body=Wish%20you%20were%20here!",paramter1];
[[UIApplication sharedApplication] openURL: mailURL];
}
NSString * jsCallBack = [NSString stringWithFormat:@"myJavascriptFunction('%@');",parameter];
[self.webView stringByEvaluatingJavaScriptFromString:jsCallBack];
如之前所述,使用URL scheme可以解决问题。如果您有多个应用程序,并且希望能够从其中一个打开另一个,则在使用PhoneGap构建时非常简单:您只需要将URL scheme添加到您的config.xml文件中,例如:
// In config.xml
<gap:url-scheme>
<scheme>app1scheme</scheme>
</gap:url-scheme>
然后在您的另一个应用程序中,您将只需拥有到app1scheme://
的链接,例如:
<a href="app1scheme://">Start App1</a>
以下是所有iOS/iPhone应用程序的URL列表
更多信息可以在此过时的链接中找到 http://www.wiki.akosma.com/IPhone_URL_Schemes
查看此链接以了解如何实现您的URL
https://appurl.org/docs-handling-android
需要使用插件,不幸的是你需要本地iOS代码:
这个可以用: https://github.com/phonegap/phonegap-plugins/tree/master/iOS/ExternalFileUtil