Adres URL recenzji iTunes i iOS 7 (poproś użytkownika o ocenę naszej aplikacji) AppStore wyświetla pustą stronę

158

Czy ktoś wie, czy technika, której używa się do poproszenia użytkownika o ocenę naszej aplikacji i otwarcie dla niego App Store bezpośrednio na stronie z oceną, 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 wyświetla pustą stronę). Próbowałem też tego adresu URL bez powodzenia:

http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?pageNumber=0&sortOrdering=1&type=Purple+Software&mt=8&id=353372460
Samuel
źródło
Po spojrzeniu na kod źródłowy UAAppReviewManager wygląda na to, że rzeczywiście istnieje pb z iOS7. Używają więc standardowego adresu URL aplikacji, więc użytkownik musi wyszukać przycisk oceny: - /
Samuel
Wygląda na to, że link do recenzji dla iOS 7 nie działa. Zmienię kod na zwykły adres URL linku do aplikacji. Użytkownik będzie musiał kliknąć przycisk przeglądania.
Emmy
4
Drugi link, który opublikowałeś, działa teraz na iOS 7! Przechodzi prosto do strony z recenzjami
Maximilian Litteral
dla mnie ... wydaje się, że pierwszy adres URL działa. Właśnie zmieniłem numer identyfikacyjny
Nilesh Kumar
Możliwy duplikat linku do sklepu
g00glen00b

Odpowiedzi:

198

Począwszy od iOS7 adres URL się zmienił i nie może kierować do 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 wyglądałoby to następująco

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

Zwróć uwagę na identyfikator przed liczbą ... ten ciąg to identyfikator 353372460, a nie tylko 353372460

W przypadku wszystkich systemów wcześniejszych niż iOS7 należy użyć „starego” adresu URL, tylko te mogą prowadzić bezpośrednio do strony recenzji. Należy również pamiętać, że te połączenia 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 na Appirater, aby zobaczyć implementację. https://github.com/arashpayan/appirater

Nie mogę Ci pomóc w szczegółach dotyczących phonegap (nigdy z niej nie korzystałem). Ale w zasadzie sprowadza się do sprawdzenia wersji iOS, na której działa użytkownik, a następnie użyj starego adresu URL lub nowego adresu URL iOS7.

Szczery
źródło
18
W rzeczywistości otwiera to aplikację, a nie kartę recenzji.
Idan
3
Tak, to prawda, ale na razie pod iOS7 to najlepsze, co można obecnie osiągnąć.
Frank,
Nowe Facebook aplikacja pokazuje stronę sklepu App wewnątrz samej aplikacji w iOS 7. ktoś wie jak to zrobić?
EricS
1
W przeciwieństwie do iRate, MUSISZ użyć powyższego linku z informacją / LANGUAGE / app / idAPP_ID
Dan
6
Chcesz usunąć język, Appirater również ma ten sam problem, jeśli urządzenie jest ustawione na język, który nie jest równy sklepowi iTunes, otrzymasz pustą stronę (np. Brytyjski angielski), jeśli usuniesz język, bit nadal działa i sklep się otwiera w języku właścicieli.
Chris,
166

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

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

gdzie xxxxxxxxjest identyfikator Twojej aplikacji.

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

mkll
źródło
5
To jest znowu zepsute w 8.0 DP 5! Zgłoś to teraz jako błąd i mam nadzieję, że uda nam się go naprawić w wydaniu produkcyjnym.
Cliff Ribaudo
6
W moim przypadku działa bezpośrednio na stronę przeglądu App Store.app. Zbudowany z Xcode 6. Zweryfikowany w iOS 8.0, iOS 7.1.2, iPhone 5 i iPhone 4.
jclee
7
Dowiedziałem się. Typ powinien zawsze odpowiadać fioletowemu oprogramowaniu - to sprawa jabłka.
Matt Parkins
2
Działa poprawnie na iPhonie i iPadzie w iOS 8.3. Właśnie przetestowane :) Dziękuję!
samotnie
2
Działa dobrze na iPodzie Gen 5, iOS 9.0.1.
haxpor
47

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

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

W przypadku wersji niższych niż iOS 7 użyj starej:

itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=YOUR_APP_ID
Idan
źródło
1
Daje to pusty ekran na moich urządzeniach z iOS7 (używających Xcode 5), to był adres URL, którego nadal używam dla iOS6. W przypadku iOS 7 używam tego, który wyszczególnił w mojej odpowiedzi. Dziwne, że to dla ciebie działa.
Frank,
@Frank, jak otworzyć ten link? Używam iRate i używam tego linku, może spróbuj go użyć i sprawdź, jaka dokładnie jest różnica w stosunku do twojego kodu.
Idan
2
Używam następującego kodu [[UIApplication sharedApplication] openURL:[NSURL URLWithString:ITUNES_APP_URL_IOS7]];
Frank,
1
self.appStoreID nawet się nie kompiluje
ngb
1
Znów się zepsuło w iOS 8 DP5. Zacznij zgłaszać to jako błąd i miej nadzieję, że zostaną naprawione przez produkcję! W przeciwnym razie będziemy czekać ponownie do 8.1.
Cliff Ribaudo,
18

Prosta alternatywa oparta na jednym wierszu kodu: ** Zobacz także poniższe komentarze do symulatora **

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

EDYCJA: Teraz, gdy iOS 7.1 umożliwia bezpośredni link do zakładki Recenzje w App Store, warto zainwestować dodatkowe linie kodu, aby dostać się tam bezpośrednio: zobacz inne odpowiedzi na resztę.

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

Otrzymuję te same wyniki podczas testów na urządzeniach 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 Detailskarty, a nie do Reviewskarty.

Purple+SoftwareZwiązek dostaje użytkownikowi aż do zakładki Recenzje w iOS 6, który jest oczywiście korzystna, gdy wiesz, jak sprawdzić OS.

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że otworzyć strony, ponieważ adres jest nieprawidłowy (wiemy, że jest to prawidłowy adres URL poza symulatorem, w dowolnej przeglądarce)

Dla jasności : na iOS 7: http://zapewnia takie same wrażenia, jak itms-apps:bez zauważalnego opóźnienia.

* pamiętaj, że zachowanie symulatora opisane powyżej. Nie różni się to całkowicie od próby uzyskania dostępu do kamery przez symulator: symulator nie jest miejscem, w którym można ją przetestować. *

Jason R. Escamilla
źródło
1
Nie jestem pewien, jak dokładnie odpowiadasz na to pytanie. Ten link, który podałeś, nie robi tego, o co prosi OP, czyli otwiera stronę „recenzje” w App Store. Bezpośrednie połączenie z samą aplikacją jest banalne.
Asem H.
Biorąc pod uwagę, że nie możesz połączyć się bezpośrednio z recenzjami w iOS7, wydaje się to całkowicie rozsądnym rozwiązaniem.
Nick Cecil,
Chociaż obecnie jest to prawda, nie ma gwarancji, że http będzie nadal kierować do aplikacji App Store. Apple może w przyszłości zdecydować o wysyłaniu linków do aplikacji http do Safari, kto wie? Bezpieczniej jest używać protokołu bezpośredniego.
poetmountain
Tyle że Apple zmieniło protokół bezpośredni, więc nie działa w iOS7, chyba że używasz innego formatu. Więc wcale nie jest „bezpieczniejszy”.
Real World
1
Jeśli chodzi o http:porównanie, itms-apps:byłem w stanie połączyć się bezpośrednio z kartą recenzji w systemie iOS 7.1.1, itms-appsa nie z nim http.
zekel,
17

Otwarcie strony recenzji bezpośrednio z aplikacji jest możliwe w iOS7. Użyj 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 .. :)

Murali
źródło
Nie mam pojęcia ... Sprawdzałeś w iOS8?
Murali
1
Nie. Zgłoś błąd!
Cliff Ribaudo
Jestem na iOS 8.1.1 i ten adres URL prowadzi bezpośrednio do strony recenzji.
mrzzmr
1
Co to jest „type = Purple + Software” w ciągu znaków?
Darko
16

Nie jest jasne, które wersje iOS to jest poparte, ale jako część iOS 10,3 istnieje nowy parametr zapytania , które mogą być dodawane 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 dodano obsługę między iOS 8.0 a 9.3.5. Wymagane jest dalsze dochodzenie!

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

Spowoduje to otwarcie okna dialogowego „Napisz recenzję” , a nie tylko wyświetlenie karty recenzji.

Joseph Duffy
źródło
2
Pozdrawiam stary :) To było jak dotąd najlepsze rozwiązanie. Do rzeczy i całkowicie służy celowi. Dla mnie to akceptowalna odpowiedź. Przetestowano pod kątem działania w wersji 9.3.5 i iOS 10.2.1. Bezpośrednio otwiera napisz recenzję. Użyłem tego: itms-apps: //itunes.apple.com/gb/app/id1136613532? Action = write-review & mt = 8, aby skłonić użytkownika bezpośrednio do napisania recenzji.
Ankit Kumar Gupta
... ale czy gb nie odnosi się do Wielkiej Brytanii? Jeśli tak, spowoduje to skierowanie wszystkich użytkowników do brytyjskiego App Store?
Robert Gummesson
@Robert Tak, link, który pierwotnie miałem / gb na początku. Myślę, że nadal byłby otwarty dla sklepu użytkownika, ale usunąłem go z odpowiedzi
Joseph Duffy
Działa w iOS10, ale wydaje się, że nie działa w iOS11 (używając wersji beta 9). Jakieś pomysły, jeśli coś się zmieni?
ZS
Działa to w iOS 11.1.1. Dzięki! Powinna być akceptowana odpowiedź, @astrocb
Vexir
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;
}
Będzie
źródło
1
Appirater został ponownie zaktualizowany, aby naprawić inny problem. Główna zmiana polegała na zmianie czeku z < 7.1na < 8.0tak, aby templateReviewURLiOS7link był używany we wszystkich wersjach 7.x iOS zamiast używania starego linku do wszystkiego między> = 7.1 a <8.0.
Markus A.,
9

Link do recenzji ponownie zepsuł się w iOS9. Przeprowadzając pewne eksperymenty, doszedłem do wniosku, że Apple przywróciło to, co było przed iOS7. Więc musisz zrobić:

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

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

Ser Pounce
źródło
5

Wszystkie powyższe odpowiedzi zostały już wycofane (iOS 7, ale mogą działać), dlatego przedstawiam nowy sposób, w jaki Apple zaleca udostępnianie linków do aplikacji. Link do Twojej aplikacji to ten z iTunes (użyj Copy 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 opcjonalne poprawnie i radzić sobie z możliwością braku dostępu do 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)")
        }
    }
}

Cel C

#define APP_URL_STRING  @"https://itunes.apple.com/us/app/calcfast/id876781417?mt=8"

wtedy możesz wywołać APP_URL_STRINGswój kod:

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

Zwróć uwagę, że jest to obecnie zalecany sposób przez Apple, ponieważ poprzednia metoda przetwarzania linków przekierowujących została wycofana 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ższe łącze do aplikacji jest zalecane do użycia w kodzie lub w linkach, których użytkownik nie widzi bezpośrednio. Jeśli chcesz podać link, który będzie widoczny i zapamiętany przez użytkownika, skorzystaj z: http://appstore.com/calcfast

Sverrisson
źródło
3
to nie prowadzi do strony recenzji
ngb
@ngb możesz linkować tylko do aplikacji lub strony programisty. Podczas głosowania w dół proszę podać ważny powód lub błąd. Nie pokazuję linków do strony z recenzjami, ale użytkownik może łatwo kliknąć na oceń.
Sverrisson
1
To jest właściwa metoda zalecana przez Apple. Wszystko inne to hack.
Martin Marconcini
@Bingo Co masz na myśli? Podane przeze mnie łącze kończy się na & mt = 8 oraz odnośnikach do strony recenzji. W mojej odpowiedzi odnoszę się do tego, co zaleca Apple, Twój link może działać teraz i może w Twoim przypadku, ale czy działa dla użytkowników w innym kraju, czy na pewno się nie zmieni?
Sverrisson,
4

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

Aby uzyskać przykładowy kod, 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 niestandardową funkcją dla UIAlertController.

Ankit Kumar Gupta
źródło
3

Muszę to zrobić, aby automatycznie uzyskać identyfikator produktu i wygenerować linki do recenzji App Store i 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

 - (IBAction) openAppPageButton: (id)sender {
   NSString *appStoreLink = appStoreLink;
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString: appStoreLink]];
 }
Tibidabo
źródło
2

Mówi się, że ten błąd zostanie naprawiony w iOS7.1. Przeczytaj tutaj, na forum Corona i tutaj na iPhoneDevSDK .

Joselito
źródło
3
Niestety iOS 7.1 jest już dostępny i nadal nie działa.
user1139733
2
Znowu działa na iOS 7.1 (przechodząc bezpośrednio do strony Recenzje), a inni wskazali to samo w linku devsdk. U mnie musiałem tylko zmienić schemat z itms-apps na http i działa idealnie na iOS 7.1. W iOS 7.0 nadal prowadzi tylko do głównej strony aplikacji, ale przynajmniej link http działa, w przeciwieństwie do starego linku itms-apps, który wyświetlałby tylko białą stronę.
stonemonk
Mogę teraz pozytywnie potwierdzić, że "stara" metoda (Purple + Software) działa bez zarzutu w iOS7.1. Możesz zobaczyć dowód w mojej aplikacji: j.mp/josegg Na głównym ekranie kliknij "ustawienia" -> kliknij "Pobierz za darmo Js "-> następnie kliknij" Oceń nas "-> zostaniesz przeniesiony prosto do zakładki recenzji na stronie mojej aplikacji w sklepie z aplikacjami (oczywiście działa tylko na iOS 7.1+ lub iOS 6.1.4-)
Joselito