[通过单击复制[]复制通过打开打开已安装的应用]

问题描述 投票:-1回答:1

我的应用程序称为Labmed,其中将出现一个按钮,用于打开“ LAB Befund”应用程序。如果已经安装了“ LAB Befund”,请打开该应用程序,而不要转到AppStore。

代码:

NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setValue:ltvController forKey:@"AppName"];
[array addObject:dic];

NSString *LABAppURL = "AppName://openApp?param1=XXX&param2=YYY";
NSString *LABWebURL = @"https://itunes.apple.com/de/app/AppName/id1019115877?mt=8";


BOOL canOpenURL = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:LABWebURL]];


NSLog(@"can open: %d", canOpenURL);

NSString *url = canOpenURL ? LABAppURL : LABWebURL;
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];

这是我到目前为止在互联网上发现的内容。每次都会打开Appstore,原因是已安装该应用。

我在.plist中添加了以下语句:

URL types
   Item0
      URL Schemes
         Item0
      URL Identifier

CanOpenURL返回“否”。

结论:假设有两个应用程序TestA和TestB。 TestB要查询是否已安装TestA。 “ TestA”在其info.plist文件中定义以下URL方案:

<key>CFBundleURLTypes</key>
<array>
<dict>
    <key>CFBundleURLSchemes</key>
    <array>
        <string>testA</string>
    </array>
</dict>

第二个应用程序“ TestB”试图通过调用来确定是否安装了“ TestA”:

[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"TestA://"]];

但是在iOS9中,这通常不会返回NO,因为“ TestA”需要添加到TestB的info.plist文件中的LSApplicationQueriesSchemes条目中。这是通过将以下代码添加到TestB的info.plist文件中来完成的:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>TestA</string>
</array>

这就是我的工作方式。

ios objective-c url-scheme openurl
1个回答
0
投票

您必须在LABAppURL中将"LAB Befund"替换为您在LAB Befund的Info.plist中放置的处理程序(URL架构)。

© www.soinside.com 2019 - 2024. All rights reserved.