URL de révision iTunes et iOS 7 (demandez à l'utilisateur d'évaluer notre application) AppStore affiche une page vierge

158

Est-ce que quelqu'un sait si la technique utilisée pour demander à l'utilisateur de noter notre application et lui ouvrir l'App Store directement sur la page d'évaluation fonctionne toujours sur iOS 7?

J'avais l'habitude d'ouvrir cette URL depuis mon application:

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

Mais il semble que cela ne fonctionne plus (l'AppStore affiche une page vierge). J'ai également essayé cette URL sans chance:

http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?pageNumber=0&sortOrdering=1&type=Purple+Software&mt=8&id=353372460
Samuel
la source
Après avoir regardé le code source de UAAppReviewManager, il semble qu'il y ait effectivement un pb avec iOS7. Ils utilisent donc l'URL standard de l'application, de sorte que l'utilisateur doit rechercher le bouton de tarif: - /
Samuel
Il semble que le lien de révision pour iOS 7 ne fonctionne pas. Je changerai mon code en l'URL du lien de l'application standard. L'utilisateur devra cliquer sur le bouton de révision.
Emmy
4
Le deuxième lien que vous avez publié fonctionne maintenant sur iOS 7! Va directement à la page d'avis
Maximilian Litteral
pour moi .... la première URL semble fonctionner. Je viens de remplacer mon numéro d'identification
Nilesh Kumar
Copie possible du lien
g00glen00b

Réponses:

198

À partir d'iOS7, l'URL a changé et ne peut pas diriger vers la page de révision, mais uniquement vers l'application

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

Où APP_ID doit être remplacé par votre ID d'application. En fonction de l'ID d'application de la question, ce serait le suivant

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

Notez l' id devant le numéro ... cette chaîne est l' id 353372460, pas seulement 353372460

Pour tout ce qui est antérieur à iOS7, l '«ancienne» URL doit être utilisée, seules celles-ci peuvent vous amener directement à la page de révision. Vous devez également prendre note que ces appels ne fonctionneront que sur les appareils . Les exécuter dans le simulateur ne fera rien car le simulateur n'a pas installé l'application App Store.


Jetez un œil par exemple à Appirater pour une implémentation. https://github.com/arashpayan/appirater

Je ne peux pas vous aider avec les détails de phonegap (je ne l'ai jamais utilisé). Mais il s'agit essentiellement de vérifier la version iOS que votre utilisateur exécute, puis d'utiliser l'ancienne URL ou la nouvelle URL iOS7.

Franc
la source
18
En fait, cela ouvre l'application et non l'onglet de révision.
Idan
3
Oui, c'est vrai, mais sous iOS7 pour l'instant c'est le meilleur qui puisse être réalisé pour le moment.
Frank
La nouvelle application Facebook affiche la page de l'App Store à l' intérieur de l'application elle-même dans iOS 7. Quelqu'un sait-il comment faire cela?
EricS
1
Contrairement à iRate, vous DEVEZ utiliser le lien ci-dessus avec les informations / LANGUAGE / app / idAPP_ID
Dan
6
Vous souhaitez supprimer la langue, Appirater a également le même problème si l'appareil est réglé sur une langue qui ne correspond pas à iTunes Store, vous obtenez une page vierge (par exemple, l'anglais britannique), si vous supprimez le bit de langue, cela fonctionne toujours et le magasin s'ouvre dans la langue des propriétaires.
Chris
166

L'URL suivante fonctionne parfaitement sur iOS 7.1:

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

xxxxxxxxest votre identifiant d'application.

MISE À JOUR . Fonctionne sur iOS 9.3.4 et iOS 10 GM (par Jeet)

mkll
la source
5
Ceci est à nouveau cassé dans 8.0 DP 5! Signalez-le maintenant comme un bogue et espérons que nous pourrons le corriger dans la version de production.
Cliff Ribaudo
6
Fonctionne pour moi pour accéder directement à la page d'examen App Store.app. Construit avec Xcode 6. Vérifié sous iOS 8.0, iOS 7.1.2, iPhone 5 et iPhone 4.
jclee
7
J'ai découvert. Le type doit toujours être égal au logiciel violet - c'est un truc Apple.
Matt Parkins
2
Il fonctionne correctement sur iPhone et iPad sous iOS 8.3. Juste testé :) Merci!
seul
2
Fonctionne correctement sur iPod Gen 5, iOS 9.0.1.
haxpor
47

Cela fonctionne de mon côté (Xcode 5 - iOS 7 - Appareil !):

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

Pour les versions inférieures à iOS 7, utilisez l'ancienne:

itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=YOUR_APP_ID
Idan
la source
1
Cela donne un écran vide sur mes appareils iOS7 (en utilisant Xcode 5), c'était l'URL que j'utilise toujours pour iOS6. Pour iOS 7, j'utilise celui détaillé dans ma réponse. Etrange que cela fonctionne pour vous.
Frank
@Frank comment ouvrez-vous ce lien? J'utilise iRate et j'utilise ce lien, essayez peut-être de l'utiliser et de vérifier quelle est exactement la différence avec votre code.
Idan
2
J'utilise le code suivant [[UIApplication sharedApplication] openURL:[NSURL URLWithString:ITUNES_APP_URL_IOS7]];
Frank
1
self.appStoreID ne compile même pas
ngb
1
Il est à nouveau cassé dans iOS 8 DP5. Commencez à signaler cela comme un bug et espérons qu'ils seront corrigés en production! Sinon, nous attendrons à nouveau la 8.1.
Cliff Ribaudo
18

Alternative simple à une ligne de code: ** Voir également les commentaires du simulateur ci-dessous **

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

EDIT: Maintenant qu'iOS 7.1 permet un lien direct vers l'onglet Avis dans l'App Store, cela vaut la peine d'investir les lignes de code supplémentaires pour y arriver directement: voir d'autres réponses pour le reste.

ici nous utilisons http: au lieu de itms-apps: , laissez iOS faire le reste du travail

J'obtiens les mêmes résultats de test sur les appareils iOS 6.1 & 7 (iPad / iPhone / iPod touch 4)

Plus précisément, ce raccourci , pour iOS 6, amène l'utilisateur à l' Detailsonglet et non à l' Reviewsonglet.

Le Purple+Softwarelien conduit l'utilisateur jusqu'à l'onglet Avis dans iOS 6, ce qui est évidemment préféré si vous savez comment vérifier le système d'exploitation.

Remarque importante : cela entraînera une erreur dans le simulateur pour iOS 5.1, 6.1 et 7.
Impossible d'ouvrir la page Safari ne peut pas ouvrir la page car l'adresse n'est pas valide (nous savons qu'il s'agit d'une URL valide en dehors du simulateur, sur n'importe quel navigateur)

Pour être clair : sur iOS 7: http://offre la même expérience que itms-apps:sans délai notable.

* gardez à l'esprit que le comportement du simulateur indiqué ci-dessus. Ce n'est pas complètement différent d'essayer d'accéder à la caméra via un simulateur: le simulateur n'est pas l'endroit pour le tester. *

Jason R. Escamilla
la source
1
Je ne sais pas exactement comment répondez-vous à la question. Ce lien que vous avez fourni ne fait pas ce que l'OP demande, c'est-à-dire ouvrir la page "avis" dans l'App Store. Se connecter directement à l'application elle-même est trivial.
Asem H.
Étant donné que vous ne pouvez pas créer de lien direct vers les avis dans iOS7, cela semble être une solution parfaitement raisonnable.
Nick Cecil
Bien qu'actuellement vrai, il n'y a aucune garantie que http continuera à être acheminé vers l'application App Store. Apple pourrait décider à l'avenir d'envoyer des liens d'applications http à Safari, qui sait? Plus sûr d'utiliser le protocole direct.
poetmountain
Sauf qu'Apple a changé le protocole direct pour qu'il ne fonctionne pas sous iOS7 sauf si vous utilisez un format différent. Donc pas vraiment "plus sûr" du tout.
Monde réel
1
En ce qui concerne http:vs, itms-apps:j'ai pu créer un lien direct vers l'onglet des critiques avec itms-appset non avec httpiOS 7.1.1.
zekel
17

L'ouverture de la page de révision directement depuis l'application est possible dans iOS7. Veuillez utiliser l'url suivante ...

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

Cela fonctionnera certainement .. :)

Murali
la source
Je n'ai pas d'idée .. Avez-vous vérifié dans iOS8?
Murali
1
Non. Déposez un rapport de bogue!
Cliff Ribaudo
Je suis sur iOS 8.1.1, et cette URL va directement à la page d'examen.
mrzzmr
1
Qu'est-ce que "type = Purple + Software" dans la chaîne?
Darko
16

Il est pas clair quelles versions d'iOS cela est pris en charge par, mais dans le cadre d'iOS 10.3 il y a un nouveau paramètre de requête qui peut être ajouté à l'URL: action=write-review. J'ai testé cela sur iOS 10.2 et 9.3.5 et cela fonctionne. Cependant, cela ne fonctionne pas sur iOS 7.1.2, donc la prise en charge a été ajoutée entre iOS 8.0 et 9.3.5. Une enquête plus approfondie est nécessaire!

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

Cela ouvrira la boîte de dialogue «Rédiger un avis» , plutôt que d'afficher simplement l'onglet de révision.

Joseph Duffy
la source
2
Cheers bro :) C'était la meilleure solution à ce jour. Au point et sert complètement le but. Pour moi, c'est la réponse acceptable. Testé pour fonctionner sur 9.3.5 et iOS 10.2.1. Ouvre directement écrire un avis. J'ai utilisé ceci: itms-apps: //itunes.apple.com/gb/app/id1136613532? Action = write-review & mt = 8, pour que l'utilisateur écrive directement l'avis.
Ankit Kumar Gupta
... mais gb ne fait-il pas référence à la Grande-Bretagne? Si tel est le cas, tous les utilisateurs seront-ils renvoyés vers l'App Store britannique?
Robert Gummesson
@Robert Yeh, le lien que j'avais à l'origine / gb au début. Je pense qu'il serait toujours ouvert au magasin de l'utilisateur, mais je l'ai supprimé de la réponse
Joseph Duffy
Cela fonctionne sous iOS10, mais ne semble pas fonctionner sous iOS11 (en utilisant la version bêta 9). Des idées si quelque chose a changé?
ZS le
Cela fonctionne dans iOS 11.1.1. Merci! Devrait être la réponse acceptée, @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;
}
Volonté
la source
1
Appirater a de nouveau été mis à jour pour résoudre un autre problème. Le principal changement a consisté à changer la vérification de < 7.1à < 8.0afin que le templateReviewURLiOS7lien soit utilisé pour toutes les versions 7.x iOS plutôt que d'utiliser l'ancien lien pour tout ce qui se situe entre> = 7.1 et <8.0.
Markus A.
9

Le lien d'examen a une fois de plus rompu dans iOS9. En faisant quelques expériences, j'ai compris qu'Apple était revenu à ce qu'il était avant iOS7. Vous devez donc faire:

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

Où se 247423477trouve votre ID d'application à 9 chiffres (la principale différence est que vous devez ajouter &onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Softwareaprès l'ID d'application).

Ser Pounce
la source
5

Toutes les réponses ci-dessus sont désormais obsolètes (iOS 7, mais peuvent fonctionner) donc, je propose la nouvelle façon qu'Apple recommande de fournir des liens vers les applications. Le lien pour votre application est celui d'iTunes (utilisez Copier le lien), celui-ci est recommandé pour une utilisation dans le code:

Swift 3.0

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

Ou mieux - traiter correctement l'option et gérer la possibilité de ne pas pouvoir atteindre le lien:

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

Objectif c

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

alors vous pouvez appeler APP_URL_STRINGvotre code:

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

Notez que c'est maintenant la méthode recommandée par Apple, car la méthode précédente de traitement des liens de redirection est obsolète et n'est pas prise en charge.

Le lien pour toutes vos applications, si vous en avez plusieurs:

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

Le lien App ci-dessus est recommandé pour une utilisation dans du code ou des liens qui ne sont pas vus directement par l'utilisateur. Si vous souhaitez fournir un lien qui peut être vu et mémorisé par l'utilisateur, utilisez ce qui suit: http://appstore.com/calcfast

Sverrisson
la source
3
cela ne renvoie pas à la page des critiques
ngb
@ngb, vous pouvez uniquement créer un lien vers les applications ou la page des développeurs. S'il vous plaît, lorsque vous votez en bas, donnez une raison valable ou un échec. Je ne montre pas de liens vers la page de révision, mais l'utilisateur peut facilement cliquer sur le taux.
Sverrisson
1
C'est la bonne méthode recommandée par Apple. Tout le reste est un hack.
Martin Marconcini du
@Bingo Que voulez-vous dire? Le lien que je fournis se termine par & mt = 8 ans liens vers la page de révision. Dans ma réponse, je fais référence à ce qu'Apple recommande, votre lien peut fonctionner maintenant et peut-être dans votre cas, mais est-ce que cela fonctionne pour les utilisateurs d'un autre pays ou vous êtes sûr qu'il ne changera pas?
Sverrisson le
4

Utiliser cette URL était la solution parfaite pour moi. Il amène l'utilisateur directement au Write a Review section. Crédits à @Joseph Duffy.

Pour un exemple de code, essayez ceci:

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

Ici, showAlert est une fonction personnalisée pour un UIAlertController.

Ankit Kumar Gupta
la source
3

J'ai ceci pour obtenir automatiquement l'ID de produit et générer des liens de revue de l'App Store et de page produit .

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

Ouvrir la page de révision de l'application

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

Ouvrez la page App Store de l'application

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

On dit que ce bogue sera corrigé sur iOS7.1. Lisez ici sur le forum corona, et ici sur l'iPhoneDevSDK .

Joselito
la source
3
Malheureusement, iOS 7.1 est maintenant disponible et ne fonctionne toujours pas.
user1139733
2
Cela fonctionne à nouveau pour moi sur iOS 7.1 (en allant directement à la page Avis) et d'autres l'ont indiqué dans le lien devsdk. Pour moi, je n'ai eu qu'à changer le schéma d'itms-apps en http et cela fonctionne parfaitement sur iOS 7.1. Sur iOS 7.0, il ne va toujours qu'à la page principale de l'application, mais au moins le lien http fonctionne, contrairement à l'ancien lien itms-apps qui afficherait simplement une page blanche.
stonemonk
Je peux maintenant confirmer positivement que la méthode "ancienne" (Purple + Software) fonctionne parfaitement dans iOS 7.1 Vous pouvez voir une preuve dans mon application: j.mp/josegg Sur l'écran principal, cliquez sur "paramètres" -> cliquez sur "Obtenir gratuitement Js "-> puis cliquez sur" Evaluez-nous "-> vous serez directement redirigé vers l'onglet de révision de la page de mon application sur l'App Store (ne fonctionne évidemment que pour iOS 7.1+ ou iOS 6.1.4-)
Joselito