16

この状況では、iPhoneアプリで「myAppを開く」(myAppがデバイスにインストールされている場合)または「myAppをダウンロード」(myAppがデバイスにインストールされていない場合)というボタンを表示する必要があります。これを行うには、アプリ(既知のカスタムURLを使用)がデバイスにインストールされているかどうかを検出する必要があります。これどうやってするの?前もって感謝します。

4

5 に答える 5

33

2014年1月8日更新-あなたができる3つのこと

私は実際にクライアントのためにこれをもう一度しなければなりませんでした。彼らは、ユーザーがメインアプリから2番目のアプリを開くことができるようにしたいと考えていました。

これが私の発見です。この方法を使用し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"]];

    } 
}

1つのオプションを選択してください、私は選択であなたを甘やかしました。要件に合ったものを選択してください。私の場合、プログラムのさまざまな領域で3つのオプションすべてを使用する必要がありました。

于 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];
        }
}];

事前にスキームを宣言する必要がないためです。

canOpenURLTwitterが何百ものアプリを検出するためにそれを使用したため、これはすでに非推奨になっていますが、いくつかの奇妙な制限があります。

于 2020-12-11T17:27:41.943 に答える