我的应用程序依赖于iOS OpenVPN Connect 应用。
因此,我必须检查该应用是否已安装。
如果已安装,则只需使用OpenURL scheme打开该应用程序,否则将打开其App Store链接以便用户安装。
所以,我的问题在于我找不到与该应用相关联的任何打开链接。
感谢任何帮助!
我的应用程序依赖于iOS OpenVPN Connect 应用。
因此,我必须检查该应用是否已安装。
如果已安装,则只需使用OpenURL scheme打开该应用程序,否则将打开其App Store链接以便用户安装。
所以,我的问题在于我找不到与该应用相关联的任何打开链接。
感谢任何帮助!
它输出一个文档类型。因此,您可以使用UIDocumentInteractionController来检查文件类型是否可以打开,从而确定应用程序是否已安装。
UTI是 net.openvpn.formats.ovpn
将该类型的文件复制到捆绑包中(您可以在Mac上创建这样的文件),并尝试使用 presentOpenInMenuFromRect 呈现交互控制器。
将自己设置为委托方,如果它触发willShowMenu,则表示应用程序存在-您将关闭菜单。
因此,以下是一些入门代码:
NSString *file = ... //path to file with UTI in question
UIDocumentInteractionController *c = ... //init with file
c.delegate = self;
_hasAppInstalledForUTI = NO;
[c present...];
if(!_hasAppInstalledForUTI) {
//act
}
...
- willPresentOpenInMenu {
[c dismissAnimated:NO];
_hasAppInstalledForUTI = YES;
}
顺便提一下:我检查了应用程序,没有URL方案。
支持openvpn://
URL协议的功能在OpenVPN Connect 1.0.6
中被引入,根据OpenVPN Connect FAQ,您可以使用以下代码:
BOOL installed = [application canOpenURL:[NSURL URLWithString:@"openvpn://"]];
UIApplication * app = [UIApplication sharedApplication];
BOOL installed = [app canOpenURL:[NSURL URLWithString:@"openvpn://"]];
if (installed) {
[app openURL: [NSURL URLWithString:@"openvpn://"]];
} else {
[app openURL: [NSURL URLWithString: @"https://itunes.apple.com/app/id590379981?mt=8"]];
}
编辑:实际上这种方法不起作用,我刚刚测试过了——问题在于AppStore中发布的OpenVPN Connect版本是1.0.5,因此该功能不可用((
要检查用户是否安装了应用程序,您需要执行以下操作:
NSURL *url = "appScheme://"
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
else {
// can't open url
}
但并不是所有的应用程序都有URL方案。 我知道我的没有。
如果您无法在网上找到任何内容,则很可能不存在此类方案。 尝试联系开发人员以确定是否存在此类方案,否则尝试查找另一个具有此类方案的应用程序,并改用该应用程序。
openvpn://
并阅读常见问题解答 https://docs.openvpn.net/docs/openvpn-connect/openvpn-connect-ios-faq.html。 - pronebird我认为您想从您的应用程序中打开“openvpn ios”应用程序。请查看以下链接:
http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-working-with-url-schemes/
按照所述步骤操作,并检查应用程序是否已打开。