iTunesがURLをレビューし、iOS 7(ユーザーにアプリの評価を求めます)AppStoreに空白のページが表示される


158

ユーザーに私たちのアプリを評価して、評価ページで直接App Storeを開くように要求するために使用された手法がiOS 7でまだ機能しているかどうか誰かが知っていますか?

私は自分のアプリからこのURLを開いていました:

itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=353372460&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software

しかし、もう機能していないようです(AppStoreには空白のページが表示されます)。私もこのurlを試してみました:

http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?pageNumber=0&sortOrdering=1&type=Purple+Software&mt=8&id=353372460

UAAppReviewManagerのソースコードを見ると、iOS7には実際にPBがあるようです。つまり、標準のアプリURLを使用するため、ユーザーはレートボタンを検索する必要があります:-/
Samuel

iOS 7のレビューリンクが機能しないようです。コードを通常のアプリのリンクURLに変更します。ユーザーはレビューボタンをクリックする必要があります。
エミー

4
あなたが投稿した2番目のリンクはiOS 7で動作します!レビューページの右側に移動します
Maximilian Litteral 2014年

私にとって....最初のURLは機能しているようです ID番号を交換しました
Nilesh Kumar 2016

回答:


198

iOS7以降、URLが変更され、レビューページに誘導することはできず、アプリのみに誘導します

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

APP_IDをアプリケーションIDに置き換える必要がある場合。質問のアプリIDに基づくと、次のようになります。

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

数字の前のIDに注意してください...その文字列は353372460ではなくID 353372460です

iOS7より前のすべての場合、「古い」URLを使用する必要があります。それらのみが、レビューページに直接アクセスできます。これらの呼び出しはデバイスでのみ機能することにも注意してください。シミュレータにはApp Storeアプリがインストールされていないため、それらをシミュレータで実行しても何も起こりません。


実装については、たとえばAppiraterを見てください。https://github.com/arashpayan/appirater

電話ギャップの詳細についてはサポートできません(これを使用したことはありません)。ただし、基本的には、ユーザーが実行しているiOSのバージョンを確認し、古いURLまたは新しいiOS7のURLを使用することになります。


18
実際には、これはレビュータブではなくアプリを開きます。
Idan

3
はい、それは本当ですが、今のところiOS7では、それは現時点で達成できる最高のものです。
フランク

新しいFacebookアプリは、iOS 7のアプリ自体の中にアプリストアページを表示します。
EricS 2013

1
iRateとは異なり、/ LANGUAGE / app / idAPP_ID情報を含む上記のリンクを使用する必要があります
Dan

6
言語を削除したい場合、Appiraterにも同じ問題があり、デバイスがiTunesストアに相当しない言語に設定されている場合、空白のページ(イギリス英語など)が表示されます。言語ビットを削除すると、動作し、ストアが開きます。所有者の言語で。
Chris

166

次のURLはiOS 7.1で完全に機能します。

http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=xxxxxxxx&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8

ここで、xxxxxxxxはアプリIDです。

更新。iOS 9.3.4およびiOS 10 GM(Jeetによる)で動作します


5
これは8.0 DP 5で再び壊れています!バグとして報告してください。製品版リリースで修正できることを願っています。
クリフリバウド2014

6
App Store.appのレビューページに直接アクセスできます。Xcode 6で構築
。iOS8.0

7
わかった。タイプは常に紫色のソフトウェアに等しくなければなりません-それはアップルのものです。
Matt Parkins、2014

2
iOS 8.3のiPhoneとiPadの両方で正しく動作します。テスト済み:)ありがとうございます!
2015年

2
iPod Gen 5、iOS 9.0.1で正常に動作します。
haxpor 2015年

47

これは私の側で機能します(Xcode 5-iOS 7- デバイス!):

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

iOS 7より前のバージョンでは、古いバージョンを使用します。

itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=YOUR_APP_ID

1
これにより、iOS7デバイス(Xcode 5を使用)で空白の画面が表示されます。これは、iOS6で引き続き使用しているURLです。iOS 7の場合、私は私の回答で詳述されているものを使用しています。それがあなたのために働いているのは奇妙です。
フランク

@フランクどうやってこのリンクを開くの?私はiRateを使用していますが、このリンクを使用しています。おそらく、それを使用して、コードとの違いを正確に確認してください。
イダン

2
私は次のコードを使用しています [[UIApplication sharedApplication] openURL:[NSURL URLWithString:ITUNES_APP_URL_IOS7]];
Frank

1
self.appStoreIDはコンパイルさえしません
ngb

1
iOS 8 DP5では再び壊れています。これをバグとして報告し始め、本番環境で修正されることを期待してください!それ以外の場合は、再び8.1まで待機します。
クリフリバウド2014

18

コードの1行の簡単な代替方法: **以下のシミュレーターのコメントも参照してください**

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

編集:iOS 7.1ではApp Storeの[レビュー]タブへの直接リンクが許可されたので、コードを追加して直接そこにアクセスすることには価値があります。残りについては他の回答を参照してください。

ここではの http: 代わりに 使用しています。残りの作業はiOSitms-apps:任せます

私は、iOS 6.1&7デバイス(アプリ/ iPhone / iPod touchの4)でテストと同じ結果が取得

具体的には、このショートカットのために、iOSの6はにユーザーをとりDetails、タブではなくReviews、タブ。

このPurple+Softwareリンクにより、ユーザーはiOS 6の[レビュー]タブに移動します。OSの確認方法を知っている場合は、これが明らかに推奨されます。

重要な注意:これにより、iOS 5.1、6.1、7のシミュレーターでエラーが発生します。
アドレスが無効であるため、オープンページSafariがページを開くことができないことができません(私たちが知っている、それはすべてのブラウザ上で、シミュレータ外部に有効なURLです)

明確にするために:iOS 7の場合:顕著な遅延なしhttp://と同じエクスペリエンスを提供しますitms-apps:

*上記のシミュレータの動作に注意してください。これは、シミュレータを介してカメラにアクセスしようとすることと完全に異なるわけではありません。シミュレータはそれをテストする場所ではありません。*


1
質問にどれだけ正確に答えているのかわかりません。あなたが提供したこのリンクは、OPが要求することを実行しません。つまり、App Storeの「レビュー」ページを開いています。アプリ自体に直接リンクするのは簡単です。
Asem H. 2013

iOS7のレビューに直接リンクできないことを考えると、これは完全に合理的な解決策のようです。
Nick Cecil

現在は真実ですが、httpが引き続きApp Storeアプリにルーティングされる保証はありません。Appleは将来、httpアプリのリンクをSafariに送信することを決定するかもしれません。直接プロトコルを使用する方が安全です。
poetmountain 2013年

Appleが直接プロトコルを変更したことを除いて、別のフォーマットを使用しない限り、iOS7では機能しません。したがって、実際には「安全」ではありません。
実世界

1
http:vs に関しては、iOS 7.1.1 ではなくitms-apps:、レビュータブに直接リンクすることができました。itms-appshttp
ゼケル2014

17

iOS7ではアプリから直接レビューページを開くことが可能です。次のURLを使用してください...

itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=YOUR_APP_ID

これは間違いなく動作します.. :)


わかりません。iOS8でチェックインしましたか?
Murali 2014

1
いいえ、違います。バグレポートを提出してください!
クリフリバウド2014

私はiOS 8.1.1を使用しています。このURLは直接レビューページに移動します。
mrzzmr 2015年

1
文字列の「type = Purple + Software」とは何ですか?
Darko 2015年

16

これがサポートされているiOSのバージョンは明確ではありませんが、iOS 10.3の一部として、URLに追加できる新しいクエリパラメーターがありますaction=write-review。私はこれをiOS 10.2と9.3.5でテストしましたが動作します。ただし、iOS 7.1.2では機能しないため、iOS 8.0と9.3.5の間にサポートが追加されました。さらに調査が必要です!

例:https : //itunes.apple.com/app/id929726748?action=write-review&mt=8

これにより、単にレビュータブが表示されるのではなく、[レビューを書く ] ダイアログが開きます。


2
乾杯仲間:)これはこれまでのところ最高の解決策でした。要点を明確にし、目的を完全に果たします。私にとってこれは許容できる答えです。9.3.5およびiOS 10.2.1で動作することがテストされています。レビューを書いて直接開きます。私はこれを使用しました:itms-apps://itunes.apple.com/gb/app/id1136613532?action = write-review&mt = 8、ユーザーに直接レビューを書かせます。
Ankit Kumar Gupta 2017

...しかし、GBはイギリスを指していないのですか?もしそうなら、これはすべてのユーザーをUK App Storeに紹介しますか?
Robert Gummesson 2017年

@Robert Yeh、私が最初に/ gbを持っていたリンク。私はそれがまだユーザーのストアに開くだろうと思うが、私は答えからそれを削除した
ジョセフ・ダフィーを

iOS10では動作しますが、iOS11では動作していないようです(ベータ9を使用)。何かが変わった場合のアイデアは?
ZS 2017

これはiOS 11.1.1で機能します。ありがとう!承認された回答、@ astrocb
Vexir

9
+ (NSString *)getReviewUrlByAppId:(int)appId
{ 
    NSString *templateReviewURL = @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=APP_ID";
    NSString *templateReviewURLiOS7 = @"itms-apps://itunes.apple.com/app/idAPP_ID";
    NSString *templateReviewURLiOS8 = @"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=APP_ID&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software";

    //ios7 before
    NSString *reviewURL = [templateReviewURL stringByReplacingOccurrencesOfString:@"APP_ID" withString:[NSString stringWithFormat:@"%d", appId]];

    // iOS 7 needs a different templateReviewURL @see https://github.com/arashpayan/appirater/issues/131
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0 && [[[UIDevice currentDevice] systemVersion] floatValue] < 7.1) 
    {
        reviewURL = [templateReviewURLiOS7 stringByReplacingOccurrencesOfString:@"APP_ID" withString:[NSString stringWithFormat:@"%d", appId]];
    }
    // iOS 8 needs a different templateReviewURL also @see https://github.com/arashpayan/appirater/issues/182
    else if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
    {
        reviewURL = [templateReviewURLiOS8 stringByReplacingOccurrencesOfString:@"APP_ID" withString:[NSString stringWithFormat:@"%d", appId]];
    }

    return reviewURL;
}

1
Appiraterは、別の問題を修正するために再度更新されました。主な変更は、チェックをから< 7.1に変更し< 8.0て、templateReviewURLiOS7リンクが> = 7.1から<8.0の間のすべての古いリンクを使用するのではなく、すべての7.x iOSバージョンに使用されるようにすることでした。
Markus A.

9

iOS9では、レビューリンクが再び壊れています。いくつかの実験を行った結果、AppleがそれをiOS7以前の状態に戻したことに気づきました。だからあなたはしなければなりません:

itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=247423477&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software

2474234779桁のアプリIDはどこですか(主な違いは&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software、アプリIDの後に追加する必要があることです)。


5

上記の回答はすべて非推奨(iOS 7ですが、機能する可能性があります)なので、Appleがアプリへのリンクを提供することを推奨する新しい方法を提供します。アプリのリンクはiTunesからのリンクです(リンクのコピーを使用)。これはコードでの使用をお勧めします。

Swift 3.0

let path = URL(string: "https://itunes.apple.com/us/app/calcfast/id876781417?mt=8")
UIApplication.shared.open(path!)

またはより良い-オプションを正しく扱い、リンクに到達できない可能性を処理します。

if let path = URL(string: "https://itunes.apple.com/us/app/calcfast/id876781417?mt=8") {
    UIApplication.shared.open(path) {
        (didOpen:Bool) in
        if !didOpen {
            print("Error opening:\(path.absoluteString)")
        }
    }
}

Objective-C

#define APP_URL_STRING  @"https://itunes.apple.com/us/app/calcfast/id876781417?mt=8"

次にAPP_URL_STRING、コードで呼び出すことができます:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString: APP_URL_STRING] options:@{} completionHandler:nil];

リダイレクトリンクを処理する以前の方法は廃止されており、サポートされていないため、これは現在Appleが推奨する方法です。

すべてのアプリのリンク(複数ある場合):

#define MYCOMPANY_URL_PATH @"http://appstore.com/mycompany"
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: MYCOMPANY_URL_PATH] options:@{} completionHandler:nil];

上記のアプリリンクは、ユーザーが直接見ないコードまたはリンクで使用することをお勧めします。ユーザーが見たり覚えたりできるリンクを提供したい場合は、以下を使用します。 http://appstore.com/calcfast


3
これはレビューページにリンクしていません
ngb '16

@ngbリンクできるのは、アプリまたは開発者ページのみです。反対票を投じる場合は、正当な理由または失敗をお知らせください。レビューページへのリンクは表示していませんが、ユーザーは簡単にレートをクリックできます。
スベリソン、2014

1
これは正しいApple推奨の方法です。それ以外はハックです。
Martin Marconcini、2016年

@Bingoどういう意味ですか?私が提供するリンクは、レビューページへの&mt = 8 ansリンクで終了します。私の回答では、Appleが推奨しているものについて言及していますが、リンクは現在機能している可能性がありますが、他の国のユーザーにとっては機能しますか、それとも変更されないと確信していますか?
Sverrisson

4

このURLを使用することは、私にとって完璧なソリューションでした。ユーザーを直接Write a Review sectionます。@Joseph Duffyへのクレジット。

サンプルコードについては、これを試してください:

Swift 3、Xcode 8.2.1:

 let openAppStoreForRating = "itms-apps://itunes.apple.com/gb/app/id1136613532?action=write-review&mt=8"
 if UIApplication.shared.canOpenURL(URL(string: openAppStoreForRating)!) {
      UIApplication.shared.openURL(URL(string: openAppStoreForRating)!)
 } else {
      showAlert(title: "Cannot open AppStore",message: "Please select our app from the AppStore and write a review for us. Thanks!!")
 }

ここで、showAlertはのカスタム関数ですUIAlertController


3

これは、製品IDを自動的に取得し、App Storeレビューと製品ページへのリンクを生成するためのものです。

- (void) getAppStoreLinks {
productID = [[NSUserDefaults standardUserDefaults] objectForKey:@"productID"]; //NSNumber instance variable
appStoreReviewLink = [[NSUserDefaults standardUserDefaults] objectForKey:@"appStoreReviewLink"]; //NSString instance variable
appStoreLink = [[NSUserDefaults standardUserDefaults] objectForKey:@"appStoreLink"]; //NSString instance variable

if (!productID || !appStoreReviewLink || !appStoreLink) {
    NSString *iTunesServiceURL = [NSString stringWithFormat:@"https://itunes.apple.com/lookup?bundleId=%@", [NSBundle mainBundle].bundleIdentifier];
    NSURLSession *sharedSes = [NSURLSession sharedSession];
    [[sharedSes dataTaskWithURL:[NSURL URLWithString:iTunesServiceURL]
              completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

                  NSInteger statusCode = ((NSHTTPURLResponse *)response).statusCode;

                  if (data && statusCode == 200) {

                      id json = [[NSJSONSerialization JSONObjectWithData:data options:(NSJSONReadingOptions)0 error:nil][@"results"] lastObject];

                      //productID should be NSNumber but integerValue also work with NSString
                      productID = json[@"trackId"];

                      if (productID) {
                          appStoreReviewLink = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=%d&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8",productID.integerValue];
                          appStoreLink = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/app/id%d",productID.integerValue];

                          [[NSUserDefaults standardUserDefaults] setObject:productID forKey:@"productID"];
                          [[NSUserDefaults standardUserDefaults] setObject:appStoreReviewLink forKey:@"appStoreReviewLink"];
                          [[NSUserDefaults standardUserDefaults] setObject:appStoreLink forKey:@"appStoreLink"];

                      }
                  } else if (statusCode >= 400) {
                      NSLog(@"Error:%@",error.description);
                  }
              }
      ] resume];
}
}

アプリのレビューページを開く

- (IBAction) rateButton: (id)sender {
   NSString *appStoreReviewLink = appStoreReviewLink;
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:appStoreReviewLink]];
}

アプリのApp Storeページを開く

 - (IBAction) openAppPageButton: (id)sender {
   NSString *appStoreLink = appStoreLink;
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString: appStoreLink]];
 }

2

このバグはiOS7.1で修正されると言われています。ここコロナフォーラムとここiPhoneDevSDKをお読みください


3
残念ながらiOS 7.1は現在出ており、まだ機能していません。
user1139733 2014年

2
それは私のためにiOS 7.1で再び動作していて(直接[レビュー]ページに移動します)、他の人がdevsdkリンクで同じことを示しています。私にとっては、スキームをitms-appsからhttpに変更するだけで、iOS 7.1で完全に機能しました。iOS 7.0では、メインのアプリページのみに移動しますが、白いページを表示するだけの古いitms-appsリンクとは異なり、少なくともhttpリンクは機能します。
stonemonk 14

「古い」(紫+ソフトウェア)メソッドがiOS7.1で問題なく機能していることを確認できました。アプリに証拠が 表示されます。j.mp / joseggメイン画面で[設定]をクリックし、[無料にする]をクリックしますJS -レートお『」>をクリックします』 - >アプリストアに私のアプリのページのレビュー]タブにまっすぐにさせていただきます(当然のみのiOS 7.1以降またはiOS 6.1.4-の作品)
ホセリート
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.