16

我在这种情况下,我必须在 iphone 应用程序中显示一个按钮,上面写着“打开 myApp”(如果设备上安装了 myApp)或显示“下载 myApp”(如果设备上没有安装 myApp)。为此,我需要检测设备上是否安装了应用程序(具有已知的自定义 URL)。我怎样才能做到这一点?提前致谢。

4

5 回答 5

33

2014 年 1 月 8 日更新 - 您可以做的 3 件事

我实际上不得不再次为客户这样做。他们希望用户能够从主应用程序中打开他们的第二个应用程序(如果已安装)。

这是我的发现。使用该canOpenURL方法检查是否安装了应用程序或/然后使用该openURL方法

  1. 打开安装在 iOS 设备上的应用程序
  2. 将用户带到应用商店,直接将他们指向应用/您的开发者应用列表
  3. 把他们带到一个网站上

适用于每个场景的所有代码示例

//Find out if the application has been installed on the iOS device
- (BOOL)isMyAppInstalled { 
    return [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"nameOfMyApp:"]]; 
} 

- (IBAction)openOrDownloadApp { 
    //This will return true if the app is installed on the iOS device
    if ([self myAppIsInstalled]){
        //Opens the application
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"nameOfMyApp:"]]; 
    } 
    else { //App is not installed so do one of following:

        //1. Take the user to the apple store so they can download the app
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.com/apps/nameOfMyApp"]]; 

        //OR

        //2. Take the user to a list of applications from a developer
        //or company exclude all punctuation and space characters. 
        //for example 'Pavan's Apps'
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.com/apps/PavansApps"]];

        //OR

        //3. Take your users to a website instead, with maybe instructions/information
         [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.pavan.com/WhyTheHellDidTheAppNotOpen_what_now.html"]];

    } 
}

选择一个选项,我刚刚把你宠坏了。选择一个适合您的要求。就我而言,我必须在程序的不同区域使用所有三个选项。

于 2010-09-27T23:59:19.210 回答
20

如果您的应用的 URL 方案是“myapp:”,那么

BOOL myAppInstalled = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"myapp:"]];

(需要 iOS 3.0。)

于 2010-11-27T01:41:11.740 回答
6

检查应用程序是否安装在设备中

1)在 info.plist 添加 LSApplicationQueriesSchemes 如下例

在此处输入图像描述

2) 在 URL 类型中

在此处输入图像描述

3)现在检查应用程序是否安装

- (IBAction)openAppPressed:(UIButton *)sender {
    NSString *urlString = @"XYZAPP://";
    NSURL *url = [NSURL URLWithString:urlString];

    if ([[UIApplication sharedApplication] canOpenURL:url]) {
        [[UIApplication sharedApplication] openURL:url];
    }
    else {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itunes link for download app"]];
    }
}
于 2016-03-18T13:11:01.720 回答
0

您可以在需要此应用程序嗅探的任何页面的头部添加一个简单的元标记。

欲了解更多信息,请访问此处:

http://developer.apple.com/library/ios/#documentation/AppleApplications/Reference/SafariWebContent/PromotingAppswithAppBanners/PromotingAppswithAppBanners.html

于 2013-03-26T19:00:27.597 回答
0

对于那些使用 canOpenURL 的人来说,从这里迁移到openURL:options:completionHandler:

NSString *urlString = @"XYZAPP://";
NSURL *url = [NSURL URLWithString:urlString];
[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {
        if (!success) {
            [[UIApplication sharedApplication] openURL:appStoreUrl options:@{} completionHandler:nil];
        }
}];

因为这不需要您提前声明该计划。

canOpenURL由于 Twitter 很久以前就使用它来检测数百个应用程序,因此已弃用它已经有一些奇怪的限制。

于 2020-12-11T17:27:41.943 回答