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
4

12 に答える 12

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
于 2013-09-20T00:45:44.567 に答える
18

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

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

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

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

iOS 6.1 および 7 デバイス (iPad/iPhone/iPod touch 4) でテストしても同じ結果が得られます 。

具体的には、iOS 6のこのショートカットは、ユーザーをタブではなくタブに移動させます。DetailsReviews

このPurple+Softwareリンクは、iOS 6 の [Reviews] タブにユーザーを誘導します。これは、OS の確認方法を知っている場合に明らかに好まれます。

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

明確にするために: iOS 7 の場合:目立った遅延なしhttp://と同じエクスペリエンスを提供します。* 上記のシミュレーターの動作に注意してください。これは、シミュレーターを介してカメラにアクセスしようとすることとまったく異なるわけではありません。シミュレーターは、カメラをテストする場所ではありません。*itms-apps:

于 2013-09-25T10:28:57.780 に答える
17

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

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

これは間違いなく機能します.. :)

于 2014-06-16T09:59:26.243 に答える
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;
}
于 2015-06-25T04:02:41.203 に答える
5

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

スイフト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

于 2014-05-23T17:18:43.737 に答える
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]];
 }
于 2016-05-26T03:43:56.713 に答える
2

このバグは iOS7.1 で修正されるとのことです。コロナ フォーラムはこちら、iPhoneDevSDK はこちらをご覧ください

于 2014-02-12T14:36:57.553 に答える