有人知道用于要求用户评价我们的应用并直接在评级页面上为他开放App Store的技术是否仍在iOS 7上运行?
我曾经从我的应用中打开这个网址:
itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=353372460&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software
但它看起来不再适用了(AppStore显示空白页面)。我也尝试过这个网址:
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?pageNumber=0&sortOrdering=1&type=Purple+Software&mt=8&id=353372460
答案 0 :(得分:198)
从iOS7开始,网址已更改,无法指向审核页面,只能指向应用
itms-apps://itunes.apple.com/app/idAPP_ID
APP_ID需要替换为您的应用程序ID。根据问题的App ID,它将是以下
itms-apps://itunes.apple.com/app/id353372460
注意数字前面的 id ...该字符串是 id 353372460,而不仅仅是353372460
对于iOS7之前的任何内容,需要使用“旧”网址,只有那些可以直接进入评论页面。您还应注意,这些来电仅适用于设备上的 。由于模拟器没有安装App Store应用程序,因此在模拟器中运行它们将无效。
请参阅Appirater实例。 https://github.com/arashpayan/appirater
无法帮助您使用phonegap细节(从未使用过它)。但它基本上归结为检查用户正在运行的iOS版本,然后使用旧URL或新的iOS7 URL。
答案 1 :(得分:165)
以下网址在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提供)
答案 2 :(得分: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
答案 3 :(得分:18)
One-Line-of-Code简单替代方案: **另请参阅下面的模拟器评论**
http://itunes.apple.com/app/idAPP_ID
编辑:既然iOS 7.1允许直接链接到App Store中的评论标签,那么值得投入额外的代码来直接到达那里:其他答案见其他答案。 < / p>
此处我们正在使用 http:
而不是 itms-apps:
,让iOS完成其余的工作 < / p>
我在iOS 6.1及更高版本上获得相同的结果测试7台设备(iPad / iPhone / iPod touch 4)
具体来说, iOS 6 的快捷方式会将用户带到Details
标签,而不是Reviews
标签。
Purple+Software
链接将用户一直带到iOS 6中的“评论”选项卡,如果您知道如何检查操作系统,这显然是首选。
重要提示:这会导致iOS 5.1,6.1和7模拟器出错。
无法打开页面Safari无法打开页面,因为地址无效(我们知道它是模拟器外部的有效URL,在任何浏览器上)
为了清楚:在iOS 7上:http://
提供与itms-apps:
相同的体验,没有明显的延迟。
*保持请注意上面提到的模拟器行为。这与尝试通过模拟器访问摄像机并不完全不同:模拟器不是测试它的地方。 *
答案 4 :(得分:17)
可以在iOS7中直接从应用程序打开评论页面。 请使用以下网址...
itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=YOUR_APP_ID
这肯定会有效.. :)
答案 5 :(得分:16)
目前尚不清楚支持哪种版本的iOS,但作为iOS 10.3的一部分,可以添加new query parameter https://itunes.apple.com/app/id929726748?action=write-review&mt=8来添加到网址:action=write-review
。我已经在iOS 10.2和9.3.5上测试了这个并且它可以工作。但是,它在iOS 7.1.2上不起作用,因此在iOS 8.0和9.3.5之间添加了支持。需要进一步调查!
示例:{{3}}
这将打开“撰写评论”对话,而不是仅显示评论标签。
答案 6 :(得分: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;
}
答案 7 :(得分: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
247423477
是您的9位应用ID(主要区别在于您必须在应用ID之后附加&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software
)。
答案 8 :(得分: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)")
}
}
}
<强>目标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];
建议将上面的App链接用于代码或用户未直接看到的链接。如果您想提供用户可以看到和记住的链接,请使用以下内容:
http://appstore.com/calcfast
答案 9 :(得分:4)
使用此网址对我来说是完美的解决方案。它将用户直接带到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
的自定义函数。
答案 10 :(得分: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]];
}
答案 11 :(得分:2)
据说这个bug将在iOS7.1上修复。 Read here在电晕论坛上,here on the iPhoneDevSDK。