3

我的应用程序具有 iOS OpenVPN Connect应用程序依赖项。

所以我必须检查应用程序是否已经安装

如果是这样,我将只使用 OpenURL 方案打开应用程序,否则我将打开其应用商店链接,以便用户安装它。

所以我的问题是我找不到与这个应用程序相关的任何打开的 url。

任何帮助表示赞赏!

4

6 回答 6

2

它导出一个文档类型。因此您可以使用 UIDocumentInteractionController 来检查文件类型是否可以打开,从而安装应用程序。

uti 是net.openvpn.formats.ovpn

将该类型的文件(您可以在 OSX 上制作这样的文件)复制到包并尝试使用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 方案。

于 2013-09-01T14:14:47.957 回答
1

虽然这听起来可能有点厚颜无耻,但我认为一种方法是给开发人员发电子邮件,询问他们是否有 URL 方案,或者他们是否会为其中一个方案创建支持。这是双赢的,因为如果可以以新的方式利用他们的软件,则更有可能安装它们,并且您将获得所需的功能。

于 2013-09-02T22:01:09.647 回答
0

You try to open an .ovpn file.

Here's an old question from myself to get you started on how to do that.

Source.

Though this is not specifically check that particular app, but it should do the job.

于 2013-09-01T14:32:46.940 回答
0

openvpn://中引入了对 URL 方案的支持OpenVPN Connect 1.0.6,根据 OpenVPN Connect FAQ,您可以使用以下代码:

BOOL installed = [application canOpenURL:[NSURL URLWithString:@"openvpn://"]];

iTunes如果尚未安装,则会打开以下代码以安装 OpenVPN Connect:

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,所以这个功能在其中不可用((

于 2015-05-01T18:14:01.777 回答
0

我认为您想从您的应用程序中打开“openvpn ios”应用程序。请检查以下链接是否相同:

http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-working-with-url-schemes/

按照它所说的步骤检查应用程序是否打开。

于 2013-09-06T12:16:21.557 回答
0

要检查用户是否拥有该应用程序,您可以执行以下操作:

NSURL *url = "appScheme://"
if ([[UIApplication sharedApplication] canOpenURL:url]) {
    [[UIApplication sharedApplication] openURL:url];
}
else {
    // can't open url
}

但并非所有应用程序都有 url 方案。我知道我的没有。

如果您无法在网上找到任何内容,那么很可能没有。尝试联系开发人员以了解是否有一个开始,否则尝试找到另一个有一个的应用程序,然后使用那个。

于 2013-08-28T15:12:46.040 回答