ユーザーがアプリを評価し、評価ページで直接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
IOS7以降、URLが変更されており、レビューページにリダイレクトできませんが、アプリにのみリダイレクトできます
itms-apps://iTunes.Apple.com/app/idAPP_ID
APP_IDをアプリケーションIDに置き換える必要がある場合。質問のアプリIDに基づくと、次のようになります
itms-apps://iTunes.Apple.com/app/id353372460
数字の前にあるidに注意してください...文字列は353372460ではなくid353372460です
IOS7より前のバージョンでは、「古い」URLを使用する必要があります。その場合のみ、レビューページに直接アクセスできます。また、これらの呼び出しはデバイス上でのみ機能することに注意してください。シミュレータにはApp Storeアプリがインストールされていないため、シミュレータで実行しても何も起こりません。
実装については、たとえばAppiraterをご覧ください。 https://github.com/arashpayan/appirater
Phonegapの詳細については役に立たない(使用したことはない)。ただし、基本的には、ユーザーが実行しているiOSバージョンを確認してから、古いURLを使用するか、新しいiOS7 URLを使用します。
次の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です。
UPDATE。 iOS 9.3.4およびiOS 10で動作しますGM(by Jeet)
これは私の側で機能します(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行の単純な代替: **以下のシミュレーターのコメントも参照してください**
http://iTunes.Apple.com/app/idAPP_ID
編集:iOS 7.1ではApp Storeの[レビュー]タブへの直接リンクが可能になったため、コードを追加して直接アクセスする価値があります。他の回答は他の回答をご覧ください。
ここで使用しているhttp:
の代わりにitms-apps:
、iOSに残りの作業をさせます
IOS 6.1および7デバイス(iPad/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:
と同じエクスペリエンスを、顕著な遅延なしで提供します。
*上記のシミュレーターの動作に注意してください。これは、シミュレータを介してカメラにアクセスしようとすることとはまったく異なりません。シミュレータは、カメラをテストする場所ではありません。 *
IOS7では、アプリから直接レビューページを開くことができます。次のURLを使用してください...
itms-apps://iTunes.Apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=YOUR_APP_ID
これは間違いなく機能します。
これがサポートされている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
これは、単にレビュータブを表示するのではなく、「レビューを書く」ダイアログを開きます。
IOS9でレビューリンクが再び壊れました。いくつかの実験を行った結果、AppleがiOS7以前の状態に戻っていることがわかりました。だからあなたはする必要があります:
itms-apps://iTunes.Apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=247423477&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software
247423477
は9桁のアプリIDです(主な違いは、アプリIDの後に&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software
を追加する必要があることです)。
+ (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;
}
上記の回答はすべて廃止されました(iOS 7、ただし動作する可能性があります)。したがって、Appleがアプリへのリンクを提供することを推奨する新しい方法を提供します。アプリのリンクはiTunesからのものです(リンクのコピーを使用)。これはコードでの使用をお勧めします。
Swift 3.
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
この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
のカスタム関数です。
製品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]];
}
このバグはiOS7.1で修正されると言われています。 こちらをご覧ください コロナフォーラム、および ここでiPhoneDevSDKをご覧ください .