質問

iPhoneゲームの無料版を作成しています。アプリストアの有料版に人々を連れて行く無料版の中にボタンが欲しいです。標準リンクを使用する場合

http:// itunes。 apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=300136119&mt=8

iPhoneは最初にSafariを開き、次にアプリストアを開きます。アプリストアを直接開く他のアプリを使用しているので、それが可能であることはわかっています。

アイデアはありますか?アプリストアのURLスキームは何ですか?

役に立ちましたか?

解決

2016-02-02に編集

iOS 6から開始 SKStoreProductViewController クラスが導入されました。アプリを離れることなくアプリをリンクできます。 Swift 3.x / 2.x および Objective-C のコードスニペットはです。ここ

  

SKStoreProductViewController オブジェクトを許可するストアを提示します   App Storeから他のメディアを購入するユーザー。たとえば、あなたのアプリ   ユーザーが別のアプリを購入できるようにストアを表示する場合があります。


Apple開発者向けのニュースとお知らせから。

  

顧客をアプリに直接誘導する   iTunesリンクのあるApp Storeで   iTunesリンクを使用すると、   アクセスする簡単な方法を持つ顧客   App Storeのアプリを直接   あなたのウェブサイトまたはマーケティングから   キャンペーン。 iTunesリンクの作成は   シンプルで直接作れる   単一のアプリのいずれか、すべて   あなたのアプリ、または特定のアプリに   会社名を指定します。

     

顧客を特定の場所に送るには   応用:    http://itunes.com/apps/appname

     

送信するには   あなたが持っているアプリのリストへの顧客   App Storeで:    http://itunes.com/apps/developername

     

特定のアプリに顧客を誘導するには   あなたの会社名が   URL:    http://itunes.com/apps/developername/appname


追加メモ:

リダイレクトを回避するために、http://itms://またはitms-apps://に置き換えることができます。

ネーミングの詳細については、Apple QA1633を参照してください:

https://developer.apple.com/library/content /qa/qa1633/_index.html

編集(2015年1月現在):

itunes.com/appsリンクをappstore.com/appsに更新する必要があります。更新された上記のQA1633を参照してください。新しい QA1629 は、ストアを起動するためのこれらの手順とコードを提案していますアプリから:

  1. コンピューターでiTunesを起動します。
  2. リンクするアイテムを検索します。
  3. iTunesでアイテム名を右クリックまたはControlキーを押しながらクリックし、<!> quot; iTunes Store URLをコピー<!> quot;を選択します。ポップアップメニューから。
  4. アプリケーションで、コピーされたiTunes URLでNSURLオブジェクトを作成し、このオブジェクトをUIApplicationopenURL:メソッドに渡して、App Storeでアイテムを開きます。

サンプルコード:

NSString *iTunesLink = @"itms://itunes.apple.com/app/apple-store/id375380948?mt=8";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];

Swift 4.2

   let urlStr = "itms-apps://itunes.apple.com/app/apple-store/id375380948?mt=8"
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(URL(string: urlStr)!, options: [:], completionHandler: nil)

    } else {
        UIApplication.shared.openURL(URL(string: urlStr)!)
    }

他のヒント

App Storeに直接アプリを開く場合は、次を使用する必要があります。

itms-apps:// ...

この方法では、最初にiTunesにアクセスする代わりに、デバイスでApp Storeアプリを直接開き、App Storeのみを開きます(itms://のみを使用する場合)

役立つこと。


編集:2017年4月。 itms-apps://はiOS10でも実際に機能します。テストしました。

編集:2013年4月。 これはiOS5以降では動作しません。使用する

https://itunes.apple.com/app/id378458261

これ以上リダイレクトはありません。

SKStoreProductViewController クラスを使用して、iOS 6から正しい方法で起動します。

Swift 3.x

func openStoreProductWithiTunesItemIdentifier(identifier: String) {
    let storeViewController = SKStoreProductViewController()
    storeViewController.delegate = self

    let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier]
    storeViewController.loadProduct(withParameters: parameters) { [weak self] (loaded, error) -> Void in
        if loaded {
            // Parent class of self is UIViewContorller
            self?.present(storeViewController, animated: true, completion: nil)
        }
    }
}

func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) {
    viewController.dismiss(animated: true, completion: nil)
}
// Usage:
openStoreProductWithiTunesItemIdentifier(identifier: "13432")
  

次のようにアプリのiTunesアイテム識別子を取得できます:(静的なものの代わりに)

Swift 3.2

var appID: String = infoDictionary["CFBundleIdentifier"]
var url = URL(string: "http://itunes.apple.com/lookup?bundleId=\(appID)")
var data = Data(contentsOf: url!)
var lookup = try? JSONSerialization.jsonObject(with: data!, options: []) as? [AnyHashable: Any]
var appITunesItemIdentifier = lookup["results"][0]["trackId"] as? String
openStoreProductViewController(withITunesItemIdentifier: Int(appITunesItemIdentifier!) ?? 0)

Swift 2.x

func openStoreProductWithiTunesItemIdentifier(identifier: String) {
    let storeViewController = SKStoreProductViewController()
    storeViewController.delegate = self

    let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier]
    storeViewController.loadProductWithParameters(parameters) { [weak self] (loaded, error) -> Void in
        if loaded {
            // Parent class of self is UIViewContorller
            self?.presentViewController(storeViewController, animated: true, completion: nil)
        }
    }
}

func productViewControllerDidFinish(viewController: SKStoreProductViewController) {
    viewController.dismissViewControllerAnimated(true, completion: nil)
}
// Usage
openStoreProductWithiTunesItemIdentifier("2321354")

objective-C

static NSInteger const kAppITunesItemIdentifier = 324684580;
[self openStoreProductViewControllerWithITunesItemIdentifier:kAppITunesItemIdentifier];

- (void)openStoreProductViewControllerWithITunesItemIdentifier:(NSInteger)iTunesItemIdentifier {
    SKStoreProductViewController *storeViewController = [[SKStoreProductViewController alloc] init];

    storeViewController.delegate = self;

    NSNumber *identifier = [NSNumber numberWithInteger:iTunesItemIdentifier];

    NSDictionary *parameters = @{ SKStoreProductParameterITunesItemIdentifier:identifier };
    UIViewController *viewController = self.window.rootViewController;
    [storeViewController loadProductWithParameters:parameters
                                   completionBlock:^(BOOL result, NSError *error) {
                                       if (result)
                                           [viewController presentViewController:storeViewController
                                                              animated:YES
                                                            completion:nil];
                                       else NSLog(@"SKStoreProductViewController: %@", error);
                                   }];

    [storeViewController release];
}

#pragma mark - SKStoreProductViewControllerDelegate

- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {
    [viewController dismissViewControllerAnimated:YES completion:nil];
}
  

次のようにkAppITunesItemIdentifier(アプリのiTunesアイテム識別子)を取得できます:(静的なものの代わりに)

NSDictionary* infoDictionary = [[NSBundle mainBundle] infoDictionary];
    NSString* appID = infoDictionary[@"CFBundleIdentifier"];
    NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@"http://itunes.apple.com/lookup?bundleId=%@", appID]];
    NSData* data = [NSData dataWithContentsOfURL:url];
    NSDictionary* lookup = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
    NSString * appITunesItemIdentifier =  lookup[@"results"][0][@"trackId"]; 
    [self openStoreProductViewControllerWithITunesItemIdentifier:[appITunesItemIdentifier intValue]];

2015年夏以降...

-(IBAction)clickedUpdate
{
    NSString *simple = @"itms-apps://itunes.apple.com/app/id1234567890";
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:simple]];
}

「id1234567890」を「id」と「10桁の数字」に置き換えます

  1. これは、すべてのデバイスで完全に機能します。

  2. アプリストアにまっすぐ移動します。リダイレクトはありません。

  3. 全国の店舗すべてで問題ありません。

  4. 使用に移る loadProductWithParameters、しかし、リンクの目的が実際にあなたがいるアプリを更新することである場合、それは本当です:それはおそらくこの<!> quot; old-fashioned <!> quot;アプローチ。

Appleはappstore.comのURLを発表しました。

https://developer.apple.com/library/ios/ qa / qa1633 / _index.html

  

App Storeショートリンクには、iOSアプリ用とMacアプリ用の2つの形式の3種類があります。

     

会社名

     

iOS: http://appstore.com/ たとえば、 http://appstore.com/apple

     

Mac: http://appstore.com/mac/ たとえば、 http://appstore.com/mac/apple

     

アプリ名

     

iOS: http://appstore.com/ たとえば、 http://appstore.com/keynote

     

Mac: http://appstore.com/mac/ たとえば、 http://appstore.com/mac/keynote

     

会社ごとのアプリ

     

iOS: http://appstore.com/ /(例: http://appstore.com/apple/keynote

     

Mac: http://appstore.com/mac/ /(例: http://appstore.com/mac/apple/keynote

     

ほとんどの企業およびアプリには、標準的なApp Storeショートリンクがあります。この正規URLは、特定の文字を変更または削除することで作成されます(その多くは違法であるか、URLで特別な意味を持ちます(たとえば、<!> quot; <!> amp; <!> quot;)。

     

App Storeショートリンクを作成するには、次のルールを会社名またはアプリ名に適用します。

     

すべての空白を削除

     

すべての文字を小文字に変換する

     

すべての著作権(<!>#169;)、商標(<!>#8482;)、および登録商標(<!>#174;)記号を削除

     

アンパサンド(<!> quot; <!> amp; <!> quot;)を<!> quot; and <!> quot;に置き換えます

     

ほとんどの句読点を削除します(セットについてはリスト2を参照)

     

アクセント記号やその他の<!> quot; decorated <!> quot;を置き換えます。文字(<!>#252;、<!>#229;など)とその要素文字(u、aなど)

     

他のすべてのキャラクターはそのままにします。

     

削除する必要がある2つの句読点文字を一覧表示します。

     

!<!>#161; <!> quot;#$% '()* +、-。/ :; <!> lt; = <!> gt; <!>#191;?@ [] ^ _` {|}〜

     

以下に、行われる変換を示すいくつかの例を示します。

     

App Store

     

会社名の例

     

Gameloft = <!> gt; http://appstore.com/gameloft

     

Activision Publishing、Inc. = <!> gt; http://appstore.com/activisionpublishinginc

     

チェンの写真<!> amp;ソフトウェア= <!> gt; http://appstore.com/chensphotographyandsoftware

     

アプリ名の例

     

オカリナ= <!> gt; http://appstore.com/ocarina

     

Where <!>#8217; s My Perry? = <!> gt; http://appstore.com/wheresmyperry

     

ブレインチャレンジ<!>#8482; = <!> gt; http://appstore.com/brainchallenge

このコードは、iOSでApp Storeリンクを生成します

NSString *appName = [NSString stringWithString:[[[NSBundle mainBundle] infoDictionary]   objectForKey:@"CFBundleName"]];
NSURL *appStoreURL = [NSURL URLWithString:[NSString stringWithFormat:@"itms-apps://itunes.com/app/%@",[appName stringByReplacingOccurrencesOfString:@" " withString:@""]]];

Macでitms-appsをhttpに置き換えます:

NSURL *appStoreURL = [NSURL URLWithString:[NSString stringWithFormat:@"http:/itunes.com/app/%@",[appName stringByReplacingOccurrencesOfString:@" " withString:@""]]]; 

iOSでURLを開く:

[[UIApplication sharedApplication] openURL:appStoreURL];

Mac:

[[NSWorkspace sharedWorkspace] openURL:appStoreURL];

アプリのリンクで「itunes」を「phobos」に変更するだけです。

http:// phobos。 apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=300136119&mt=8

これでApp Storeが直接開きます

リダイレクトなしで直接リンクを設定するには:

  1. iTunesリンクメーカー http://itunes.apple.com/linkmaker/ を使用して、実際の直接リンク
  2. http://itms-apps://
  3. に置き換えます
  4. [[UIApplication sharedApplication] openURL:url];
  5. でリンクを開きます

これらのリンクは、シミュレータではなく、実際のデバイスでのみ機能することに注意してください。

出典: https://developer.apple.com/library /ios/#qa/qa2008/qa1629.html

これはAPP IDのみを使用して完全に機能しました:

 NSString *urlString = [NSString stringWithFormat:@"http://itunes.apple.com/app/id%@",YOUR_APP_ID];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];

リダイレクトの数はゼロです。

多くの回答が「itms」または「itms-apps」の使用を提案していますが、この慣行はAppleによって特に推奨されていません。 App Storeを開く方法は次のとおりです:

リスト1 iOSアプリケーションからApp Storeを起動

NSString *iTunesLink = @"https://itunes.apple.com/us/app/apple-store/id375380948?mt=8";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];

https://developer.apple.com/library/iosを参照/qa/qa1629/_index.html この回答時点で2014年3月に最終更新されました。

iOS 6以降をサポートするアプリの場合、AppleはApp Storeを表示するためのアプリ内メカニズムを提供します:SKStoreProductViewController

- (void)loadProductWithParameters:(NSDictionary *)parameters completionBlock:(void (^)(BOOL result, NSError *error))block;

// Example:
SKStoreProductViewController* spvc = [[SKStoreProductViewController alloc] init];
spvc.delegate = self;
[spvc loadProductWithParameters:@{ SKStoreProductParameterITunesItemIdentifier : @(364709193) } completionBlock:^(BOOL result, NSError *error){ 
    if (error)
        // Show sorry
    else
        // Present spvc
}];

iOS6では、エラーがある場合に完了ブロックが呼び出されない場合があります。これは、iOS 7で解決されたバグのようです。

開発者のアプリにリンクする場合、開発者の名前に句読点またはスペースが含まれている場合(たとえば、Development Company、LLC)、次のようにURLを作成します:

itms-apps://itunes.com/apps/DevelopmentCompanyLLC

それ以外の場合、<!> quot;このリクエストは処理できません<!> quot; iOS 4.3.3で

次のリンクメーカーから、アプリストアまたはiTunesの特定のアイテムへのリンクを取得できます。 http://itunes.apple.com/linkmaker/

これは機能しており、ios5で直接リンクしています

NSString *iTunesLink = @"http://itunes.apple.com/app/baseball-stats-tracker-touch/id490256272?mt=8";  
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];

これは、App Storeの他の既存のアプリケーションをリダイレクト/リンクするための簡単で短い方法です。

 NSString *customURL = @"http://itunes.apple.com/app/id951386316";

 if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:customURL]])
 {
       [[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]];
 } 

Xcode 9.1およびSwift 4の場合:

  1. StoreKitのインポート:
import StoreKit

2。プロトコルの適合

SKStoreProductViewControllerDelegate

3。プロトコルの実装

func openStoreProductWithiTunesItemIdentifier(identifier: String) {
    let storeViewController = SKStoreProductViewController()
    storeViewController.delegate = self

    let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier]
    storeViewController.loadProduct(withParameters: parameters) { [weak self] (loaded, error) -> Void in

        if loaded {
            // Parent class of self is UIViewContorller
            self?.present(storeViewController, animated: true, completion: nil)
        }
    }   
}

3.1

func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) {
    viewController.dismiss(animated: true, completion: nil)
}
  1. 使用方法:
openStoreProductWithiTunesItemIdentifier(identifier: "here_put_your_App_id")

注:

  

アプリの正確なIDを入力することは非常に重要です。これによりエラーが発生するため(エラーログは表示されませんが、このため正常に機能しません)

iTunes Connectでアプリを作成する場合、送信する前にアプリIDを取得することを確認できます。

したがって..

itms-apps://itunes.apple.com/app/id123456789

NSURL *appStoreURL = [NSURL URLWithString:@"itms-apps://itunes.apple.com/app/id123456789"];
    if ([[UIApplication sharedApplication]canOpenURL:appStoreURL])
        [[UIApplication sharedApplication]openURL:appStoreURL];

おやつに効く

複数のOSおよび複数のプラットフォームをサポートする場合、リンクの作成は複雑な問題になる可能性があります。たとえば、WebObjectsはiOS 7ではサポートされていません(一部は)

役立つ iLink というオープンソースライブラリがあります。

このライブラリの利点は、実行時にリンクが検出および作成される(ライブラリが実行中のアプリIDとOSをチェックし、どのリンクが必要かを判断することです)作成した)。これの最良の点は、使用する前にほとんど何も設定する必要がないため、エラーがなく、常に機能することです。同じプロジェクトにターゲットがほとんどないため、どのアプリIDまたはリンクを使用するかを覚えておく必要がない場合にも便利です。また、このライブラリは、ストアに新しいバージョンがある場合(これが組み込まれ、単純なフラグでこれをオフにした場合)ユーザーが同意した場合にアプリのアップグレードページを直接指すように、アプリをアップグレードするようにユーザーに求めます。

2つのライブラリファイルをプロジェクトにコピーします(iLink.h <!> amp; iLink.m)。

appDelegate.mで:

#import "iLink.h"

+ (void)initialize
{
    //configure iLink
    [iLink sharedInstance].globalPromptForUpdate = YES; // If you want iLink to prompt user to update when the app is old.
}

および評価ページを開きたい場所で、たとえば次を使用します。

[[iLink sharedInstance] iLinkOpenAppPageInAppStoreWithAppleID: YOUR_PAID_APP_APPLE_ID]; // You should find YOUR_PAID_APP_APPLE_ID from iTunes Connect 

同じファイルにiLink.hをインポートすることを忘れないでください。

ライブラリ全体の非常に優れたドキュメントと、iPhoneおよびMacのサンプルプロジェクトがあります。

少なくともiOS 9以降

  • App Storeで直接開く

アプリ

itms-apps://itunes.apple.com/app/[appName]/[appID]

開発者のアプリのリスト

itms-apps://itunes.apple.com/developer/[developerName]/[developerID]

Appleの最新ドキュメント 使用する必要があります

appStoreLink = "https://itunes.apple.com/us/app/apple-store/id375380948?mt=8"  

または

SKStoreProductViewController 

アプリストアIDをお持ちの場合は、それを使用することをお勧めします。特に将来あなたがアプリケーションの名前を変更する可能性がある場合。

http://itunes.apple.com/app/id378458261

アプリストアIDがない場合は、このドキュメントに基づいてURLを作成できます https://developer.apple.com/library/ios/qa/qa1633/_index.html

+ (NSURL *)appStoreURL
{
    static NSURL *appStoreURL;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        appStoreURL = [self appStoreURLFromBundleName:[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"]];
    });
    return appStoreURL;
}

+ (NSURL *)appStoreURLFromBundleName:(NSString *)bundleName
{
    NSURL *appStoreURL = [NSURL URLWithString:[NSString stringWithFormat:@"itms-apps://itunes.com/app/%@", [self sanitizeAppStoreResourceSpecifier:bundleName]]];
    return appStoreURL;
}

+ (NSString *)sanitizeAppStoreResourceSpecifier:(NSString *)resourceSpecifier
{
    /*
     https://developer.apple.com/library/ios/qa/qa1633/_index.html
     To create an App Store Short Link, apply the following rules to your company or app name:

     Remove all whitespace
     Convert all characters to lower-case
     Remove all copyright (©), trademark (™) and registered mark (®) symbols
     Replace ampersands ("&") with "and"
     Remove most punctuation (See Listing 2 for the set)
     Replace accented and other "decorated" characters (ü, å, etc.) with their elemental character (u, a, etc.)
     Leave all other characters as-is.
     */
    resourceSpecifier = [resourceSpecifier stringByReplacingOccurrencesOfString:@"&" withString:@"and"];
    resourceSpecifier = [[NSString alloc] initWithData:[resourceSpecifier dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES] encoding:NSASCIIStringEncoding];
    resourceSpecifier = [resourceSpecifier stringByReplacingOccurrencesOfString:@"[!¡\"#$%'()*+,-./:;<=>¿?@\\[\\]\\^_`{|}~\\s\\t\\n]" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, resourceSpecifier.length)];
    resourceSpecifier = [resourceSpecifier lowercaseString];
    return resourceSpecifier;
}

このテストに合格

- (void)testAppStoreURLFromBundleName
{
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Nuclear™"].absoluteString, @"itms-apps://itunes.com/app/nuclear", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Magazine+"].absoluteString, @"itms-apps://itunes.com/app/magazine", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Karl & CO"].absoluteString, @"itms-apps://itunes.com/app/karlandco", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"[Fluppy fuck]"].absoluteString, @"itms-apps://itunes.com/app/fluppyfuck", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Pollos Hérmanos"].absoluteString, @"itms-apps://itunes.com/app/polloshermanos", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Niños and niñas"].absoluteString, @"itms-apps://itunes.com/app/ninosandninas", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Trond, MobizMag"].absoluteString, @"itms-apps://itunes.com/app/trondmobizmag", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"!__SPECIAL-PLIZES__!"].absoluteString, @"itms-apps://itunes.com/app/specialplizes", nil);
}

ここにはたくさんの答えがありますが、開発者アプリにリンクするための提案はもう機能しないようです。

前回訪問したとき、次の形式を使用して機能させることができました:

itms-apps://itunes.apple.com/developer/developer-name/id123456789

これは機能しなくなりましたが、開発者名を削除すると機能します。

itms-apps://itunes.apple.com/developer/id123456789

この方法で試してください

http://itunes.apple.com/lookup?id= <!> quot;ここにアプリID <<> quot; jsonを返します。これから、キー<!> quot; trackViewUrl <!> quot;を見つけます。値は目的のURLです。このURLを使用します(https://itms-apps://に置き換えるだけです)。これは正常に機能します。

たとえば、アプリIDがxyzの場合、このリンクに移動します http://itunes.apple.com/lookup?id=xyz

キー<!> quot; trackViewUrl <!> quot;のURLを見つけます。これは、App StoreでのアプリのURLであり、XcodeでこのURLを使用するには、これを試してください

NSString *iTunesLink = @"itms-apps://itunes.apple.com/us/app/Your app name/id Your app ID?mt=8&uo=4";
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];

ありがとう

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top