私は自分のiPhoneゲームの無料版を作成しています。私は無料版の中にアプリストアの有料版に人々を連れて行くボタンが欲しい。標準リンクを使用している場合
http://iTunes.Apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=300136119&mt=8
iPhoneは最初にSafariを開き、次にApp Storeを開きます。私は直接App Storeを開く他のアプリを使ったことがあるので、それが可能であることを私は知っています。
何か案は?アプリストアのURLスキームは何ですか?
2016-02-02に編集
IOS 6からスタート - SKStoreProductViewController クラスが導入された。アプリを離れることなくアプリをリンクできます。 Swift 3.x/2.x および Objective-C のコードスニペットは ここ です。
SKStoreProductViewController オブジェクトは、ユーザーがApp Storeから他のメディアを購入することを可能にするストアを表します。たとえば、アプリにストアを表示して、ユーザーが別のアプリを購入できるようにすることができます。
From アップルデベロッパ向けのニュースとお知らせ 。
ITunesリンクを使用してApp Store上のアプリに直接顧客を誘導するiTunesリンクを使用すると、Webサイトまたはマーケティングキャンペーンから直接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 は、アプリからストアを起動するための次の手順とコードを示しています。
NSURL
オブジェクトを作成し、このオブジェクトをUIApplication
のopenURL
:メソッドに渡してApp Storeでアイテムを開きます。サンプルコード
NSString *iTunesLink = @"itms://iTunes.Apple.com/app/Apple-store/id375380948?mt=8";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];
Swift 3.0
let urlStr = "itms://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月。これはiOS 5以降では機能しません。ただ使う
https://iTunes.Apple.com/app/id378458261
それ以上のリダイレクトはありません。
IOS 6から始めるには、 SKStoreProductViewController classを使用します。
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アイテム識別子を得ることができます:(静的なものの代わりに)
スイフト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")
目標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]];
-(IBAction)clickedUpdate
{
NSString *simple = @"itms-apps://iTunes.Apple.com/app/id1234567890";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:simple]];
}
'id1234567890'を 'id'と 'あなたの10桁の数字'に置き換えてください。
これは すべてのデバイス で完全に機能します。
まっすぐに アプリストアに行く、リダイレクトしない。
すべての 国内店舗 でOKです。
loadProductWithParameters
、 の使用に移るべきですが、リンクの目的が実際に内部にあるアプリを更新することである場合は です。アプローチ。
Appleはappstore.comのURLを発表したばかりです。
https://developer.Apple.com/library/ios/qa/qa1633/_index.html
App Storeのショートリンクには、iOSアプリケーション用とMacアプリケーション用の2種類があります。
会社名
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 Short Linkがあります。この正規のURLは、特定の文字を変更または削除することによって作成されます(その多くは違法であるか、URL内で特別な意味を持ちます(たとえば、 "&"))。
App Storeのショートリンクを作成するには、会社名またはアプリ名に次の規則を適用します。
すべての空白を削除
すべての文字を小文字に変換する
著作権(©)、商標(™)、および登録商標(®)の記号をすべて削除します。
アンパサンド( "&")を "and"で置き換えます
句読点の大部分を削除します(リストはリスト2を参照)。
アクセント付きの文字やその他の「装飾」文字(ü、åなど)をその基本文字(u、aなど)に置き換えます。
他のすべての文字はそのままにします。
リスト2削除する必要がある句読文字.
"#$% '()* +、 - 。/ :; <=>¿?@ [] ^ _` {|}〜
以下は、行われる変換を示すいくつかの例です。
App Store
会社名の例
Gameloft => http://appstore.com/gameloft
Activision Publishing、Inc. => http://appstore.com/activisionpublishinginc
陳の写真&ソフトウェア=> http://appstore.com/chensphotographyandsoftware
アプリ名の例
オカリナ=> http://appstore.com/ocarina
私のペリーはどこにありますか? => http://appstore.com/wheresmyperry
ブレインチャレンジ™=> 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];
マック:
[[NSWorkspace sharedWorkspace] openURL:appStoreURL];
アプリのリンクで「iTunes」を「phobos」に変更するだけです。
http://phobos.Apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=300136119&mt=8
今すぐApp Storeを直接開きます
リダイレクトせずに直接リンクするには
http://
をitms-apps://
に置き換えます[[UIApplication sharedApplication] openURL:url];
でリンクを開く注意してください、これらのリンクは実際のデバイスでのみ機能し、シミュレータでは機能しません。
ソース: 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]];
リダイレクト数は0です。
いくつかの回答で「itms」または「itms-apps」の使用が推奨されていますが、この方法は特に推奨されていません。 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)が含まれている場合は、次のようにしてください。
itms-apps://iTunes.com/apps/DevelopmentCompanyLLC
そうでなければ、iOS 4.3.3では "このリクエストは処理できません"を返します。
App Storeまたは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の場合:
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)
}
openStoreProductWithiTunesItemIdentifier(identifier: "here_put_your_App_id")
注意:
あなたのアプリの正確なIDを入力することは非常に重要です。これはエラーの原因となるため(エラーログを表示しないが、このため何もうまく動作しない)
itms-apps://iTunes.Apple.com/app/[appName]/[appID]
itms-apps://iTunes.Apple.com/developer/[developerName]/[developerID]
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&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用のサンプルプロジェクトがあります。
App Store 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
によると アップルの最新のドキュメント あなたは使う必要がある
appStoreLink = "https://iTunes.Apple.com/us/app/Apple-store/id375380948?mt=8"
または
SKStoreProductViewController
この方法を試してください
http://iTunes.Apple.com/lookup?id= "ここであなたのアプリID"はjsonを返します。この中から、キー " trackViewUrl "を見つけて値を入力します。このURLを使用してください(単にhttps://
をitms-apps://
に置き換えてください)。
たとえば、アプリIDがxyzの場合は、このリンクにアクセスしてください http://iTunes.Apple.com/lookup?id=xyz
次に、キー " trackViewUrl "のURLを探します。これは、App StoreのアプリのURLです。xcodeでこのURLを使用するには、次の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]];
ありがとう
app Storeを直接開きます
NSString *iTunesLink = @"itms-apps://iTunes.Apple.com/app/ebl-
skybanking/id1171655193?mt=8";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];