ITunes review URL i iOS 7 (Poproś użytkownika o ocenę naszej aplikacji) AppStore Pokaż pustą stronę

Czy ktoś wie, czy technika użyta do poproszenia użytkownika o ocenę naszej aplikacji i otwarcie dla niego App Store bezpośrednio na stronie oceny nadal działa na iOS 7 ?

Kiedyś otwierałem ten adres url z mojej aplikacji:

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

Ale wygląda na to, że już nie działa (AppStore pokazuje pustą stronę). Wypróbowałem również ten adres URL bez powodzenia:

http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?pageNumber=0&sortOrdering=1&type=Purple+Software&mt=8&id=353372460
Author: AstroCB, 2013-09-20

12 answers

Począwszy od iOS7 adres URL zmienił się i nie może kierować strony recenzji, ale tylko do aplikacji

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

Gdzie APP_ID należy zastąpić identyfikatorem aplikacji. Na podstawie identyfikatora aplikacji z pytania będzie to następujące

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

Zwróć uwagę na id przed numerem ... ten ciąg znaków to id 353372460, a nie tylko 353372460

W przypadku czegokolwiek przed iOS7 należy użyć 'starego' adresu URL, tylko te mogą Cię bezpośrednio przejść do strony recenzji. Ty należy również pamiętać, że wywołania te będą działać tylko na urządzeniach . Uruchomienie ich w symulatorze nic nie da, ponieważ symulator nie ma zainstalowanej aplikacji App Store.


Spójrz na przykład Appirater dla implementacji. https://github.com/arashpayan/appirater

Nie mogę ci pomóc ze specyfikacją phonegap (nigdy jej nie używałem). Ale w zasadzie sprowadza się to do sprawdzenia wersji iOS, którą uruchamia użytkownik, a następnie użyć starego adresu URL lub następnie nowy URL iOS7.

 198
Author: Frank,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-11 22:03:57

Poniższy adres URL działa doskonale na iOS 7.1:

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

Gdzie xxxxxxxx jest Twoim ID aplikacji.

UPDATE . Działa na iOS 9.3.4 i iOS 10 GM (by Jeet)

 165
Author: mkll,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-13 15:23:16

To działa na moim końcu (Xcode 5 - iOS 7 - Urządzenie!):

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

Dla wersji niższych niż iOS 7 użyj starego:

itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=YOUR_APP_ID
 47
Author: Idan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-17 19:30:39

Jednolinijkowa prosta alternatywa: * * Zobacz także komentarze symulatora poniżej **

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

EDIT: teraz, gdy iOS 7.1 umożliwia bezpośrednie łącze do karty recenzje w App Store, warto zainwestować dodatkowe linie kodu, aby dostać się tam bezpośrednio: zobacz inne odpowiedzi dla reszty.

tutaj używamy http: zamiast itms-apps:, niech iOS zrobi resztę pracy

Otrzymuję te same wyniki badań na urządzenia z systemem iOS 6.1 i 7 (ipad/iPhone/iPod touch 4)

W szczególności, ten Skrót, dla iOS 6 przenosi użytkownika do karty Details, a nie do karty Reviews.

Link Purple+Software przenosi użytkownika do zakładki recenzje w iOS 6, co jest oczywiście preferowane, jeśli wiesz, jak SPRAWDZIĆ SYSTEM OPERACYJNY.

Ważna uwaga: spowoduje to błąd w symulatorze dla iOS 5.1, 6.1 i 7.
nie można otworzyć strony Safari nie można otworzyć strony, ponieważ adres jest nieprawidłowy (wiemy, że jest to poprawny adres URL poza symulatorem, w dowolnej przeglądarce)

Dla jasności: na iOS 7: http:// zapewnia to samo doświadczenie co itms-apps: bez zauważalnego opóźnienia.

* należy pamiętać, że zachowanie symulatora opisane powyżej. Nie jest to całkowicie odmienne od próby dostępu do kamery przez symulator: symulator nie jest miejscem, aby go przetestować. *

 18
Author: Jason R. Escamilla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-29 06:23:23

Otwieranie strony recenzji bezpośrednio z aplikacji jest możliwe w iOS7. Proszę użyć następującego adresu url...

itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=YOUR_APP_ID
To na pewno zadziała.. :)
 17
Author: Murali,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-16 09:59:26

Nie jest jasne, które wersje iOS są obsługiwane, ale jako część iOS 10.3 istnieje nowy parametr zapytania, który można dodać do adresu URL: action=write-review. Przetestowałem to na iOS 10.2 i 9.3.5 i działa. Jednak nie działa na iOS 7.1.2, więc wsparcie zostało dodane między iOS 8.0 i 9.3.5. Dalsze śledztwo jest wymagane!

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

Spowoduje to otwarcie " Napisz recenzję" dialog , a nie tylko Pokazywanie zakładki recenzja.

 15
Author: Joseph Duffy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-20 17:24:54

Link do recenzji po raz kolejny został przerwany w iOS9. Robiąc pewne eksperymenty, zorientowałem się, że Apple przywróciło go z powrotem do tego, jak było przed iOS7. Więc musisz to zrobić:

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

Gdzie 247423477 to twój 9-cyfrowy identyfikator aplikacji(główna różnica polega na tym, że musisz dołączyć &onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software po ID aplikacji).

 9
Author: Ser Pounce,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-06 00:18:11
+ (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;
}
 8
Author: Will,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-16 12:01:34

Wszystkie powyższe odpowiedzi zostały już przestarzałe (iOS 7, ale może działać) dlatego podaję nowy sposób, w jaki Apple zaleca dostarczanie linków do aplikacji. Link do Twojej aplikacji to ten z iTunes( użyj Kopiuj Link), ten jest zalecany do użycia w kodzie: {]}

Swift 3.0

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

Lub lepiej -- traktuj opcjonalnie poprawnie i radź sobie z możliwością nieosiągnięcia linku:

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"

Wtedy możesz zadzwonić APP_URL_STRING w Twój kod:

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

Zauważ, że jest to teraz zalecany sposób przez Apple, ponieważ poprzednia metoda przetwarzania linków przekierowujących została przestarzała i nie jest obsługiwana.

Link do wszystkich Twoich aplikacji, Jeśli masz więcej niż jedną:

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

Powyższy link do aplikacji jest zalecany do użycia w kodzie lub linkach, które nie są widoczne bezpośrednio przez użytkownika. Jeśli chcesz podać link, który może być widoczny i zapamiętany przez użytkownika, Użyj następującego: http://appstore.com/calcfast

 5
Author: Hannes Sverrisson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-07 17:20:45

Użycie tego adresu URL było dla mnie idealnym rozwiązaniem. Przenosi użytkownika bezpośrednio do Write a Review section. Podziękowania dla @ Joseph Duffy.

Dla przykładowego kodu spróbuj tego:

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!!")
 }

Tutaj showAlert jest funkcją niestandardową dla UIAlertController.

 4
Author: Ankit Kumar Gupta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-08 10:20:24

Mam to, aby automatycznie uzyskać ID Produktu i wygenerować App Store Review i linki do strony produktu.

- (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];
}
}

Otwórz stronę recenzji aplikacji

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

Otwórz stronę App Store aplikacji

 - (IBAction) openAppPageButton: (id)sender {
   NSString *appStoreLink = appStoreLink;
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString: appStoreLink]];
 }
 3
Author: Tibidabo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-26 03:43:56

Mówi się, że ten błąd zostanie naprawiony na iOS7.1. przeczytaj tutaj na forum corona, a tutaj na iPhoneDevSDK .

 2
Author: Joselito,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-16 11:59:50