且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

以编程方式检测应用程序是否安装在 iPhone 上

更新时间:2023-10-20 14:56:52

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

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

I actually had to do this for a client again. They wanted users to be able to open their second app from the main app if it had been installed.

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

This is my finding. Use the canOpenURL method to check if an app is installed or/and then use the openURL method to

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

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

All code samples available for each scenario

//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"]];

    } 
}

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

Choose one option, I've just spoiled you with choice. Choose one that fits your requirements. In my case I had to use all three options in different areas of the program.