ITunes-Überprüfungs-URL und iOS 7 (Benutzer bitten, unsere App zu bewerten) AppStore zeigt eine leere Seite an

158

Weiß jemand, ob die Technik, mit der der Benutzer aufgefordert wurde, unsere App zu bewerten und den App Store direkt auf der Bewertungsseite für ihn zu öffnen, unter iOS 7 noch funktioniert?

Ich habe diese URL über meine App geöffnet:

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

Aber es sieht so aus, als würde es nicht mehr funktionieren (AppStore zeigt eine leere Seite an). Ich habe diese URL auch ohne Glück ausprobiert:

http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?pageNumber=0&sortOrdering=1&type=Purple+Software&mt=8&id=353372460
Samuel
quelle
Nach dem Betrachten des Quellcodes des UAAppReviewManager sieht es so aus, als ob es tatsächlich eine Pb mit iOS7 gibt. Sie verwenden also die Standard-App-URL, sodass der Benutzer nach der Schaltfläche "Rate" suchen muss: - /
Samuel
Der Bewertungslink für ios 7 funktioniert anscheinend nicht. Ich werde meinen Code in die reguläre App-Link-URL ändern. Der Benutzer muss auf die Schaltfläche "Überprüfen" klicken.
Emmy
4
Der zweite Link, den Sie gepostet haben, funktioniert jetzt unter iOS 7! Geht direkt zur Bewertungsseite
Maximilian Litteral
für mich .... erste URL scheint zu funktionieren. Ich habe gerade meine ID-Nummer ersetzt
Nilesh Kumar

Antworten:

198

Ab iOS7 hat sich die URL geändert und kann nicht zur Überprüfungsseite, sondern nur zur App geleitet werden

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

Wobei APP_ID durch Ihre Anwendungs-ID ersetzt werden muss. Basierend auf der App-ID aus der Frage wäre dies die folgende

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

Beachten Sie die ID vor der Nummer ... diese Zeichenfolge ist die ID 353372460, nicht nur 353372460

Für alles vor iOS7 muss die "alte" URL verwendet werden, nur diese können Sie direkt zur Überprüfungsseite führen. Beachten Sie auch, dass diese Anrufe nur auf Geräten funktionieren . Das Ausführen im Simulator führt zu nichts, da auf dem Simulator die App Store-App nicht installiert ist.


Schauen Sie sich zum Beispiel Appirater für eine Implementierung an. https://github.com/arashpayan/appirater

Ich kann Ihnen nicht mit Phonegap-Details helfen (habe es nie benutzt). Grundsätzlich kommt es jedoch darauf an, die iOS-Version zu überprüfen, die Ihr Benutzer ausführt, und dann entweder die alte URL oder dann die neue iOS7-URL zu verwenden.

Frank
quelle
18
Tatsächlich öffnet dies die App und nicht die Registerkarte Überprüfung.
Idan
3
Ja, das stimmt, aber unter iOS7 ist das derzeit das Beste, was derzeit erreicht werden kann.
Frank
Die neue Facebook-App zeigt die App Store-Seite in der App selbst in iOS 7. Weiß jemand, wie sie das machen?
EricS
1
Anders als in iRate MÜSSEN Sie den obigen Link mit den Informationen / LANGUAGE / app / idAPP_ID verwenden
Dan
6
Wenn Sie die Sprache entfernen möchten, hat Appirater auch das gleiche Problem, wenn das Gerät auf eine Sprache eingestellt ist, die nicht dem iTunes Store entspricht. Sie erhalten eine leere Seite (z. B. britisches Englisch). Wenn Sie das Sprachbit entfernen, funktioniert es immer noch und der Store wird geöffnet in der Sprache des Besitzers.
Chris
166

Die folgende URL funktioniert unter iOS 7.1 einwandfrei:

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

Wo xxxxxxxxist deine App ID?

UPDATE . Funktioniert unter iOS 9.3.4 und iOS 10 GM (von Jeet)

mkll
quelle
5
Dies ist in 8.0 DP 5 wieder kaputt! Melde es jetzt als Fehler und hoffe, dass wir es durch die Produktionsversion beheben können.
Cliff Ribaudo
6
Funktioniert für mich, um direkt zur Überprüfungsseite von App Store.app zu gelangen. Gebaut mit Xcode 6. Verifiziert in iOS 8.0, iOS 7.1.2, iPhone 5 und iPhone 4.
jclee
7
Ich fand heraus. Typ sollte immer gleich lila Software sein - es ist eine Apfelsache.
Matt Parkins
2
Es funktioniert korrekt auf iPhone und iPad in iOS 8.3. Gerade getestet :) Danke!
Alleine
2
Funktioniert gut auf iPod Gen 5, iOS 9.0.1.
Haxpor
47

Das funktioniert auf meiner Seite (Xcode 5 - iOS 7 - Gerät !):

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

Verwenden Sie für Versionen unter iOS 7 die alte:

itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=YOUR_APP_ID
Idan
quelle
1
Auf meinen iOS7-Geräten (mit Xcode 5) wird ein leerer Bildschirm angezeigt. Dies war die URL, die ich noch für iOS6 verwende. Für iOS 7 verwende ich die in meiner Antwort beschriebene. Seltsam, dass es für Sie funktioniert.
Frank
@Frank wie öffnest du diesen Link? Ich verwende iRate und es verwendet diesen Link. Vielleicht versuchen Sie es zu verwenden und überprüfen Sie, was genau der Unterschied zu Ihrem Code ist.
Idan
2
Ich benutze den folgenden Code [[UIApplication sharedApplication] openURL:[NSURL URLWithString:ITUNES_APP_URL_IOS7]];
Frank
1
self.appStoreID kompiliert nicht einmal
ngb
1
In iOS 8 DP5 ist es wieder kaputt. Melden Sie dies als Fehler und hoffen Sie, dass sie durch die Produktion behoben werden! Sonst warten wir wieder bis 8.1.
Cliff Ribaudo
18

Einfache Alternative mit einer Codezeile : ** Siehe auch Simulatorkommentare unten **

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

BEARBEITEN: Nachdem iOS 7.1 die direkte Verknüpfung mit der Registerkarte "Bewertungen" im App Store ermöglicht, lohnt es sich, die zusätzlichen Codezeilen zu investieren, um direkt dorthin zu gelangen: Weitere Antworten finden Sie im Rest.

Hier verwenden wir http: stattdessen itms-apps: , lassen Sie iOS den Rest der Arbeit erledigen

Ich erhalte die gleichen Ergebnisse beim Testen auf iOS 6.1- und 7-Geräten (iPad / iPhone / iPod touch 4).

Insbesondere führt diese Verknüpfung für iOS 6 den Benutzer zur DetailsRegisterkarte und nicht zumReviews Registerkarte.

Der Purple+SoftwareLink führt den Benutzer bis zur Registerkarte "Bewertungen" in iOS 6, was natürlich bevorzugt wird, wenn Sie wissen, wie das Betriebssystem überprüft wird.

Wichtiger Hinweis : Dies führt zu Fehlern im Simulator für iOS 5.1, 6.1 und 7.
Seite kann nicht geöffnet werden Safari kann die Seite nicht öffnen, da die Adresse ungültig ist (wir wissen, dass es sich bei jedem Browser um eine gültige URL außerhalb des Simulators handelt).

Um ganz klar zu sein : Unter iOS 7: http://Bietet das gleiche Erlebnis wie itms-apps:ohne merkliche Verzögerung.

* Beachten Sie, dass das oben angegebene Simulatorverhalten. Dies ist nicht ganz anders als der Versuch, über einen Simulator auf die Kamera zuzugreifen: Der Simulator ist nicht der Ort, um sie zu testen. * *

Jason R. Escamilla
quelle
1
Ich bin mir nicht sicher, wie genau Sie die Frage beantworten. Dieser von Ihnen bereitgestellte Link macht nicht das, was das OP verlangt, sondern öffnet die Seite "Bewertungen" im App Store. Die direkte Verknüpfung mit der App selbst ist trivial.
Asem H.
Da Sie in iOS7 keinen direkten Link zu Reviews erstellen können, scheint dies eine absolut vernünftige Lösung zu sein.
Nick Cecil
Obwohl dies derzeit zutrifft, gibt es keine Garantie dafür, dass http weiterhin zur App Store-App weitergeleitet wird. Apple könnte in Zukunft entscheiden, http-App-Links an Safari zu senden, wer weiß? Sicherer das direkte Protokoll zu verwenden.
Poetmountain
Abgesehen davon, dass Apple das Direktprotokoll geändert hat, sodass es unter iOS7 nur funktioniert, wenn Sie ein anderes Format verwenden. Also überhaupt nicht wirklich "sicherer".
Reale Welt
1
In Bezug auf http:vs konnte itms-apps:ich mit itms-appsund nicht mit httpiOS 7.1.1 direkt auf die Registerkarte "Bewertungen" verlinken .
Zekel
17

Das Öffnen der Überprüfungsseite direkt über die App ist in iOS7 möglich. Bitte benutzen Sie die folgende URL ...

itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=YOUR_APP_ID

Das wird definitiv funktionieren .. :)

Murali
quelle
Ich habe keine Ahnung .. Hast du iOS8 eingecheckt?
Murali
1
Nein, tut es nicht. Einen Fehlerbericht einreichen!
Cliff Ribaudo
Ich bin auf iOS 8.1.1 und diese URL geht direkt zur Überprüfungsseite.
Mrzzmr
1
Was ist "type = Purple + Software" in der Zeichenfolge?
Darko
16

Es ist nicht klar, von welchen iOS-Versionen dies unterstützt wird, aber als Teil von iOS 10.3 gibt es einen neuen Abfrageparameter , der der URL hinzugefügt werden kann : action=write-review. Ich habe dies auf iOS 10.2 und 9.3.5 getestet und es funktioniert. Unter iOS 7.1.2 funktioniert dies jedoch nicht, sodass zwischen iOS 8.0 und 9.3.5 Unterstützung hinzugefügt wurde. Weitere Untersuchungen sind erforderlich!

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

Dadurch wird der Dialog "Bewertung schreiben" geöffnet , anstatt nur die Registerkarte "Überprüfung" anzuzeigen.

Joseph Duffy
quelle
2
Cheers bro :) Dies war die bisher beste Lösung. Auf den Punkt und erfüllt vollständig den Zweck. Für mich ist das die akzeptable Antwort. Getestet für 9.3.5 und iOS 10.2.1. Direkt geöffnet schreiben Sie eine Bewertung. Ich habe Folgendes verwendet: itms-apps: //itunes.apple.com/gb/app/id1136613532? Action = write-review & mt = 8, damit der Benutzer die Bewertung direkt schreibt.
Ankit Kumar Gupta
... aber bezieht sich gb nicht auf Großbritannien? Wenn ja, werden alle Benutzer auf den UK App Store verwiesen?
Robert Gummesson
@ Robert Yeh, der Link, den ich ursprünglich / gb am Anfang hatte. Ich denke, es würde immer noch für den Store des Benutzers geöffnet sein, aber ich habe es aus der Antwort entfernt
Joseph Duffy
Es funktioniert in iOS10, scheint aber nicht in iOS11 zu funktionieren (mit Beta 9). Irgendwelche Ideen, wenn sich etwas geändert hat?
ZS
Dies funktioniert in iOS 11.1.1. Vielen Dank! Sollte die akzeptierte Antwort sein, @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;
}
Wille
quelle
1
Appirater wurde erneut aktualisiert, um ein anderes Problem zu beheben. Die Hauptänderung bestand darin, die Prüfung von auf < 7.1zu ändern , < 8.0sodass der templateReviewURLiOS7Link für alle iOS-Versionen 7.x verwendet wird, anstatt den alten Link für alles zwischen> = 7.1 und <8.0 zu verwenden.
Markus A.
9

Der Bewertungslink ist in iOS9 erneut unterbrochen. Beim Experimentieren habe ich herausgefunden, dass Apple es wieder auf den Stand vor iOS7 zurückgesetzt hat. Also musst du tun:

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

Wo 247423477ist Ihre 9-stellige App-ID (der Hauptunterschied besteht darin, dass Sie &onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Softwarenach der App-ID anhängen müssen ).

Ser Pounce
quelle
5

Alle oben genannten Antworten sind jetzt veraltet (iOS 7, funktioniert aber möglicherweise). Daher biete ich die neue Art und Weise an, wie Apple empfiehlt, Links zu den Apps bereitzustellen. Der Link für Ihre App stammt von iTunes (Link kopieren). Dieser Link wird für die Verwendung im Code empfohlen:

Swift 3.0

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

Oder besser - behandeln Sie das Optionale korrekt und behandeln Sie die Möglichkeit, dass Sie den Link nicht erreichen können:

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

Ziel c

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

dann können Sie APP_URL_STRINGIhren Code eingeben:

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

Beachten Sie, dass dies jetzt von Apple empfohlen wird, da die vorherige Methode zur Verarbeitung von Weiterleitungslinks veraltet ist und nicht unterstützt wird.

Der Link für alle Ihre Apps, wenn Sie mehr als eine haben:

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

Der obige App-Link wird für die Verwendung in Code oder Links empfohlen, die vom Benutzer nicht direkt gesehen werden. Wenn Sie einen Link bereitstellen möchten, der vom Benutzer gesehen und gespeichert werden kann, verwenden Sie Folgendes: http://appstore.com/calcfast

Sverrisson
quelle
3
Dies ist kein Link zur Bewertungsseite
ngb
@ngb Sie können nur auf die Apps oder die Entwicklerseite verlinken. Bitte geben Sie bei Abstimmungen einen gültigen Grund oder Fehler an. Ich zeige keine Links zur Bewertungsseite an, aber der Benutzer kann einfach auf Rate klicken.
Sverrisson
1
Dies ist die richtige von Apple empfohlene Methode. Alles andere ist ein Hack.
Martin Marconcini
@Bingo Was meinst du? Der von mir bereitgestellte Link endet mit & mt = 8 und Links zur Überprüfungsseite. In meiner Antwort beziehe ich mich auf die Empfehlungen von Apple. Ihr Link funktioniert möglicherweise jetzt und in Ihrem Fall. Funktioniert er jedoch für Benutzer in einem anderen Land oder sind Sie sicher, dass er sich nicht ändern wird?
Sverrisson
4

Die Verwendung dieser URL war für mich die perfekte Lösung. Es führt den Benutzer direkt zum Write a Review section. Dank an @Joseph Duffy.

Versuchen Sie für einen Beispielcode Folgendes:

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

Hier ist showAlert eine benutzerdefinierte Funktion für eine UIAlertController.

Ankit Kumar Gupta
quelle
3

Ich habe dies, um die Produkt-ID automatisch zu erhalten und Links zu App Store Review und Produktseite zu generieren .

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

Öffnen Sie die Überprüfungsseite der App

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

Öffnen Sie die App Store-Seite der App

 - (IBAction) openAppPageButton: (id)sender {
   NSString *appStoreLink = appStoreLink;
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString: appStoreLink]];
 }
Tibidabo
quelle
2

Es wird gesagt, dass dieser Fehler unter iOS7.1 behoben wird. Lesen Sie hier im Corona-Forum und hier im iPhoneDevSDK .

Joselito
quelle
3
Leider ist iOS 7.1 jetzt nicht mehr verfügbar und funktioniert immer noch nicht.
user1139733
2
Es funktioniert wieder für mich unter iOS 7.1 (direkt zur Seite "Bewertungen") und andere haben dies im devsdk-Link angegeben. Für mich musste ich nur das Schema von itms-apps auf http ändern und es funktioniert perfekt unter iOS 7.1. Unter iOS 7.0 wird immer noch nur die Haupt-App-Seite aufgerufen, aber zumindest der http-Link funktioniert, im Gegensatz zum alten itms-apps-Link, bei dem nur eine weiße Seite angezeigt wird.
Stonemonk
Ich kann jetzt positiv bestätigen, dass die "alte" Methode (Purple + Software) in iOS7.1 einwandfrei funktioniert. In meiner App sehen Sie einen Beweis: j.mp/josegg Klicken Sie im Hauptbildschirm auf "Einstellungen" -> klicken Sie auf "Kostenlos herunterladen " Js "-> dann klicken Sie auf" Bewerten Sie uns "-> Sie werden direkt zur Registerkarte" Überprüfung "auf der Seite meiner App im App Store weitergeleitet (funktioniert natürlich nur für iOS 7.1+ oder iOS 6.1.4-)
Joselito