ITunes обзор URL и iOS 7 (попросите пользователей оценить наше приложение) AppStore показать пустую страницу
Кто-нибудь знает, использует ли техника, чтобы пользователь оценивал наше приложение и открывал для него магазин приложений прямо на странице рейтинга, все еще работает на 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
Ответы
Ответ 1
Начиная с iOS7 URL-адрес изменился и не может направить ссылку на страницу обзора, но только на приложение
itms-apps://itunes.apple.com/app/idAPP_ID
Где APP_ID необходимо заменить на свой идентификатор приложения. Исходя из идентификатора приложения из вопроса, он будет следующим
itms-apps://itunes.apple.com/app/id353372460
Обратите внимание на id перед номером... эта строка: id 353372460, а не только 353372460
Для чего-либо, предшествующего iOS7, нужно использовать "старый" URL-адрес, только те, которые могут получить вас прямо на странице обзора. Следует также учитывать, что эти вызовы будут работать только на устройствах. Запуск их в симуляторе ничего не сделает, поскольку на симуляторе не установлено приложение App Store.
Взгляните, например, на Appirater для реализации. https://github.com/arashpayan/appirater
Невозможно помочь вам с особенностью телефонных разговоров (никогда не использовалась). Но в основном это сводится к проверке версии iOS, которую выполняет ваш пользователь, а затем либо использовать старый URL-адрес, либо новый URL-адрес iOS7.
Ответ 2
Следующий 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
- ваш идентификатор вашего приложения.
UPDATE. Работает на iOS 9.3.4 и iOS 10 GM (от Jeet)
Ответ 3
Это работает на моем конце (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
Ответ 4
Простая альтернатива с одной строкой: ** Также см. комментарий к симулятору ниже **
http://itunes.apple.com/app/idAPP_ID
EDIT: теперь, когда 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, что, очевидно, предпочтительнее, если вы знаете, как проверить ОС.
Важное примечание. Это приведет к ошибке в симуляторе для iOS 5.1, 6.1 и 7.
Невозможно открыть страницу. Safari не может открыть страницу, потому что адрес недействителен (мы знаем, что это действительный URL-адрес за пределами симулятора, в любом браузере)
Только для того, чтобы быть ясным. На iOS 7: http://
обеспечивается тот же опыт, что и itms-apps:
без заметной задержки.
* Помните, что поведение симулятора отмечено выше. Это не совсем не похоже на попытку доступа к камере через симулятор: симулятор не является местом для его проверки. *
Ответ 5
Открытие страницы просмотра непосредственно из приложения возможно в iOS7.
Пожалуйста, используйте следующий URL-адрес...
itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=YOUR_APP_ID
Это определенно будет работать..:)
Ответ 6
Непонятно, какие версии 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
Это откроет диалог "Написать отзыв" , а не просто покажет вкладку обзора.
Ответ 7
Ссылка на обзор снова нарушена в 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-значный идентификатор приложения (основное различие заключается в том, что вы должны добавить &onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software
после идентификатора приложения).
Ответ 8
+ (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;
}
Ответ 9
Все приведенные выше ответы теперь устарели (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
Ответ 10
Использование этого 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
.
Ответ 11
У меня есть это, чтобы получить Идентификатор продукта автоматически и создать Обзор магазина приложений и ссылок на страницы продукта.
- (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]];
}
Ответ 12
Говорят, что эта ошибка будет исправлена на iOS7.1. Читайте здесь на форуме короны и здесь, на iPhoneDevSDK.