URL de revisión de iTunes e iOS 7 (solicite al usuario que califique nuestra aplicación) AppStore mostrar una página en blanco


¿Alguien sabe si la técnica utilizada para pedirle al usuario que califique nuestra aplicación y le abra la App Store directamente en la página de calificación sigue funcionando en iOS 7 ?

Solía abrir esta url desde mi aplicación:

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

Pero parece que ya no funciona (AppStore muestra una página en blanco). También he probado esta url sin suerte:

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

A partir de iOS7, la URL ha cambiado y no puede dirigirse a la página de revisión, sino solo a la aplicación

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

Donde APP_ID necesita ser reemplazado con su ID de aplicación. Basado en el ID de la aplicación de la pregunta sería el siguiente

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

Observe el id delante del número ... esa cadena es is id 353372460, no solo 353372460

Para cualquier cosa pre iOS7 la URL 'antigua' necesita ser utilizada, solo aquellos podrían llevarte directamente a la página de revisión. Usted también debe tener en cuenta que estas llamadas solo funcionarán en dispositivos. Ejecutarlos en el simulador no hará nada, ya que el simulador no tiene instalada la aplicación App Store.


Echa un vistazo a Appirater por ejemplo para una implementación. https://github.com/arashpayan/appirater

No puede ayudarte con los detalles de phonegap (nunca lo usaste). Pero básicamente se trata de comprobar la versión de iOS que el usuario está ejecutando y luego usar la URL antigua o luego nueva URL de 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-11 22:03:57

La siguiente URL funciona perfectamente en iOS 7.1:

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

Donde xxxxxxxx es su ID de aplicación.

UPDATE . Funciona en iOS 9.3.4 y iOS 10 GM (por 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-13 15:23:16

Esto funciona en mi extremo (Xcode 5 - iOS 7 - Dispositivo!):

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

Para versiones inferiores a iOS 7 use la antigua:

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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-17 19:30:39

Alternativa Simple de una Línea de Código: * * También Vea los Comentarios del Simulador A Continuación **

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

EDITAR: Ahora que iOS 7.1 permite el enlace directo a la pestaña Opiniones en la App Store, vale la pena invertir las líneas de código adicionales para llegar directamente: ver otras respuestas para el resto.

aquí estamos usando http: en lugar de itms-apps:, vamos a iOS hacer el resto del trabajo

Obtengo los mismos resultados probando en Dispositivos iOS 6.1 y 7 (iPad/iPhone/iPod touch 4)

Específicamente, este atajo , para iOS 6 lleva al usuario a la pestaña Details y no a la pestaña Reviews.

El enlace Purple+Software lleva al usuario hasta la pestaña Reseñas en iOS 6, que obviamente es preferible si sabe cómo verificar el sistema operativo.

Nota importante: Esto causará un error en el simulador para iOS 5.1, 6.1 y 7.
No se puede abrir la página Safari no puede abrir la página porque la dirección no es válido (sabemos que es una URL válida fuera del simulador, en cualquier navegador)

Para ser claros: En iOS 7: http:// proporciona la misma experiencia que itms-apps: sin demora notable.

* tenga en cuenta que el comportamiento del simulador señalado anteriormente. Esto no es completamente diferente de intentar acceder a la cámara a través de un simulador: el simulador no es el lugar para probarlo. *

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-29 06:23:23

Abrir la página de revisión directamente desde la aplicación es posible en iOS7. Por favor, utilice la siguiente url...

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

Esto definitivamente funciona.. :)

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-16 09:59:26

No está claro qué versiones de iOS es compatible con esto, pero como parte de iOS 10.3 hay un nuevo parámetro de consulta que se puede agregar a la URL: action=write-review. He probado esto en iOS 10.2 y 9.3.5 y funciona. Sin embargo, no funciona en iOS 7.1.2, por lo que se agregó soporte entre iOS 8.0 y 9.3.5. ¡Se requiere más investigación!

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

Esto abrirá el "Escribe una opinión" diálogo , en lugar de solo mostrar la pestaña revisión.

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-20 17:24:54

El enlace de revisión se ha roto una vez más en iOS9. Al hacer algunos experimentos, me di cuenta de que Apple lo revirtió a cómo era antes de iOS7. Así que tienes que hacer:

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

Donde 247423477 es su ID de aplicación de 9 dígitos (la principal diferencia es que debe agregar &onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software después del ID de aplicación).

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-16 12:01:34

Todas las respuestas anteriores han quedado obsoletas (iOS 7, pero pueden funcionar) por lo tanto, proporciono la nueva forma en que Apple recomienda proporcionar enlaces a las aplicaciones. El enlace para su Aplicación es el de iTunes (use Copiar Enlace), este se recomienda para su uso en código:

Swift 3.0

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

O mejor treat tratar el opcional correctamente y manejar la posibilidad de no poder llegar al enlace:

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"

Entonces puedes llamar a APP_URL_STRING en su código:

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

Tenga en cuenta que esta es la forma recomendada ahora por Apple, ya que el método anterior de procesamiento de enlaces de redirección ha sido obsoleto y no es compatible.

El enlace para todas tus Apps, si tienes más de una:

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

El enlace de la aplicación anterior se recomienda para su uso en código o enlaces que no son vistos directamente por el usuario. Si desea proporcionar un enlace que pueda ser visto y recordado por el usuario, utilice lo siguiente: 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-07 17:20:45

Usar esta URL fue la solución perfecta para mí. Lleva al usuario directamente a Write a Review section. Créditos para @ Joseph Duffy.

Para un código de ejemplo intente esto:

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

Aquí showAlert es una función personalizada para un 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-08 10:20:24

Tengo esto para obtener el ID de producto automáticamente y generar Revisión de la Tienda de aplicaciones y enlaces a la página del producto.

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

Abrir la página de revisión de la aplicación

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

Abra la página de la Tienda de aplicaciones de App

 - (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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-26 03:43:56

Se dice que este error se corregirá en iOS7.1. Lea aquíen el foro corona, y aquí en el 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-16 11:59:50