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

158

¿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 todavía funciona 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 probé esta url sin suerte:

http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?pageNumber=0&sortOrdering=1&type=Purple+Software&mt=8&id=353372460
Samuel
fuente
Después de mirar el código fuente de UAAppReviewManager, parece que efectivamente hay un pb con iOS7. Entonces usan la URL estándar de la aplicación, por lo que el usuario debe buscar el botón de calificación: - /
Samuel
Parece que el enlace de revisión para ios 7 no funciona. Cambiaré mi código a la URL del enlace de la aplicación normal. El usuario tendrá que hacer clic en el botón de revisión.
Emmy
44
¡El segundo enlace que publicaste ahora funciona en iOS 7! Va directamente a la página de revisión
Maximilian Litteral
para mí ... la primera URL parece funcionar. Acabo de reemplazar mi número de identificación
Nilesh Kumar
Posible duplicado del enlace de la tienda
g00glen00b

Respuestas:

198

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

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

Donde APP_ID debe reemplazarse con su ID de aplicación. Según la ID de la aplicación de la pregunta, sería la siguiente

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

Observe la identificación frente al número ... esa cadena es id 353372460, no solo 353372460

Para cualquier cosa anterior a iOS7, se debe usar la URL 'antigua', solo esas podrían llevarlo directamente a la página de revisión. 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.


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

No puedo ayudarlo con los detalles del teléfono (nunca lo usé). Pero básicamente se trata de verificar la versión de iOS que está ejecutando su usuario y luego usar la URL anterior o la nueva URL de iOS7.

Franco
fuente
18
En realidad, esto abre la aplicación y no la pestaña de revisión.
Idan
3
Sí, eso es cierto, pero bajo iOS7 por ahora eso es lo mejor que se puede lograr en este momento.
Frank
La nueva aplicación de Facebook muestra la página de la tienda de aplicaciones dentro de la aplicación en iOS 7. ¿Alguien sabe cómo lo hacen?
EricS
1
A diferencia de iRate, DEBE utilizar el enlace de arriba con la información / LANGUAGE / app / idAPP_ID
Dan
66
Desea eliminar el idioma, Appirater también tiene el mismo problema si el dispositivo está configurado en un idioma que no equivale a la tienda de iTunes, obtendrá una página en blanco (por ejemplo, inglés británico), si elimina el bit de idioma, aún funciona y la tienda se abre en el idioma de los propietarios
Chris
166

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 xxxxxxxxestá la ID de tu aplicación.

ACTUALIZACIÓN . Funciona en iOS 9.3.4 y iOS 10 GM (por Jeet)

mkll
fuente
55
¡Esto se rompe nuevamente en 8.0 DP 5! Informe ahora como un error y espero que podamos solucionarlo con la versión de producción.
Cliff Ribaudo
66
Me funciona para ir directamente a la página de revisión de App Store.app. Construido con Xcode 6. Verificado en iOS 8.0, iOS 7.1.2, iPhone 5 y iPhone 4.
jclee
77
Descubrí. El tipo siempre debe ser igual al software púrpura: es una cosa de Apple.
Matt Parkins
2
Funciona correctamente tanto en iPhone como en iPad en iOS 8.3. Acabo de probar :) ¡Gracias!
solo
2
Funciona bien en iPod Gen 5, iOS 9.0.1.
haxpor
47

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 anterior:

itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=YOUR_APP_ID
Idan
fuente
1
Esto muestra una pantalla en blanco en mis dispositivos iOS7 (usando Xcode 5), esta era la URL que todavía estoy usando para iOS6. Para iOS 7 estoy usando el detallado en mi respuesta. Es extraño que te esté funcionando.
Frank
@Frank, ¿cómo abres este enlace? Estoy usando iRate y está usando este enlace, tal vez intente usarlo y verifique cuál es exactamente la diferencia con su código.
Idan
2
Estoy usando el siguiente código [[UIApplication sharedApplication] openURL:[NSURL URLWithString:ITUNES_APP_URL_IOS7]];
Frank
1
self.appStoreID ni siquiera compila
ngb
1
Está roto de nuevo en iOS 8 DP5. ¡Comience a informar esto como un error y espere que lo arreglen por producción! De lo contrario, estaremos esperando hasta 8.1 nuevamente.
Cliff Ribaudo
18

Alternativa simple de una línea de código: ** Consulte también los comentarios del simulador a continuación **

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

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

aquí estamos usando en http: lugar de itms-apps: , dejar que iOS haga el resto del trabajo

Obtengo los mismos resultados de prueba en dispositivos iOS 6.1 y 7 (iPad / iPhone / iPod touch 4)

Específicamente, este acceso directo , para iOS 6 lleva al usuario a la Detailspestaña y no a la Reviewspestaña.

El Purple+Softwareenlace lleva al usuario hasta la pestaña Críticas en iOS 6, que obviamente es preferible si sabe cómo verificar el sistema operativo.

Nota importante : Esto provocará 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álida (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 un retraso notable.

* tenga en cuenta que el comportamiento del simulador mencionado 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. * *

Jason R. Escamilla
fuente
1
No estoy seguro de cómo responde exactamente la pregunta. Este enlace que proporcionó no hace lo que pide el OP, es decir, abrir la página de "reseñas" en la App Store. Vincular directamente a la aplicación en sí es trivial.
Asem H.
Dado que no se puede vincular directamente a Comentarios en iOS7, parece una solución perfectamente razonable.
Nick Cecil
Aunque actualmente es cierto, no hay garantía de que http continúe enrutando a la aplicación App Store. Apple puede decidir en el futuro enviar enlaces de aplicaciones http a Safari, ¿quién sabe? Más seguro usar el protocolo directo.
poetmountain
Excepto que Apple cambió el protocolo directo para que no funcione en iOS7 a menos que use un formato diferente. Así que no es realmente "más seguro" en absoluto.
Mundo real
1
Con respecto a http:vs itms-apps:pude vincular directamente a la pestaña de comentarios con itms-appsy no con httpiOS 7.1.1.
zekel
17

Abrir la página de revisión directamente desde la aplicación es posible en iOS7. Utilice la siguiente url ...

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

Esto definitivamente funcionará .. :)

Murali
fuente
No tengo idea ... ¿Se registró en iOS8?
Murali
1
No, no lo hace. ¡Presente un informe de error!
Cliff Ribaudo
Estoy en iOS 8.1.1, y esta URL va directamente a la página de revisión.
mrzzmr
1
¿Qué es "type = Purple + Software" en la cadena?
Darko
16

No está claro qué versiones de IOS Esto es apoyado por, sino como parte de IOS 10.3 hay un nuevo parámetro de consulta que puede ser añadido 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 cuadro de diálogo "Escribir una reseña" , en lugar de solo mostrar la pestaña de revisión.

Joseph Duffy
fuente
2
Saludos hermano :) Esta fue la mejor solución hasta ahora. Hasta el punto y sirve completamente el propósito. Para mí esta es la respuesta aceptable. Probado para trabajar en 9.3.5 y iOS 10.2.1. Se abre directamente escribir una reseña. Utilicé esto: itms-apps: //itunes.apple.com/gb/app/id1136613532? Action = write-review & mt = 8, para que el usuario escriba directamente la reseña.
Ankit Kumar Gupta
... pero gb no se refiere a Gran Bretaña? Si es así, ¿esto remitirá a todos los usuarios a la tienda de aplicaciones del Reino Unido?
Robert Gummesson
@Robert Yeh, el enlace que originalmente tenía / gb al principio. Creo que todavía se abriría en la tienda del usuario, pero lo eliminé de la respuesta
Joseph Duffy
Funciona en iOS10, pero no parece estar funcionando en iOS11 (usando beta 9). ¿Alguna idea si algo cambió?
ZS
Esto funciona en iOS 11.1.1. ¡Gracias! Debería ser la respuesta aceptada, @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;
}
Será
fuente
1
Appirater se ha actualizado nuevamente para solucionar otro problema. El cambio principal consistió en cambiar la verificación de < 7.1a < 8.0para que el templateReviewURLiOS7enlace se use para todas las versiones de iOS 7.x en lugar de usar el enlace anterior para todo entre> = 7.1 y <8.0.
Markus A.
9

El enlace de revisión se ha roto una vez más en iOS9. Al experimentar un poco, descubrí que Apple lo revierte a como era antes de iOS7. Entonces tienes que hacer:

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

¿Dónde 247423477está su ID de aplicación de 9 dígitos (la principal diferencia es que debe agregarla &onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Softwaredespués de la ID de la aplicación)?

Ser Pounce
fuente
5

Todas las respuestas anteriores ahora han quedado en desuso (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), se recomienda usar en el 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: trate el opcional correctamente y maneje 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)")
        }
    }
}

C objetivo

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

entonces puedes llamar APP_URL_STRINGtu 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 redireccionamiento ha quedado en desuso y no es compatible.

El enlace para todas sus aplicaciones, si tiene 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ódigos o enlaces que el usuario no ve directamente. Si desea proporcionar un enlace que el usuario pueda ver y recordar, utilice lo siguiente: http://appstore.com/calcfast

Sverrisson
fuente
3
esto no enlaza con la página de comentarios
ngb
@ngb solo puede vincular a las aplicaciones o la página del desarrollador. Por favor, cuando vote hacia abajo, dé una razón válida o una falla. No estoy mostrando enlaces a la página de revisión, pero el usuario puede hacer clic fácilmente en la tasa.
Sverrisson
1
Este es el método correcto recomendado por Apple. Cualquier otra cosa es un truco.
Martin Marconcini
@Bingo ¿Qué quieres decir? El enlace que proporciono termina en & mt = 8 ans enlaces a la página de revisión. En mi respuesta, me refiero a lo que recomienda Apple, su enlace puede funcionar ahora y tal vez en su caso, pero ¿funciona para usuarios en otro país o está seguro de que no cambiará?
Sverrisson
4

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

Para un código de muestra 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.

Ankit Kumar Gupta
fuente
3

Tengo esto para obtener el ID del producto automáticamente y generar enlaces a la página de la App Store Review y Product .

- (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 la aplicación

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

Se dice que este error se solucionará en iOS7.1. Lea aquí en el foro de corona, y aquí en el iPhoneDevSDK .

Joselito
fuente
3
Desafortunadamente, iOS 7.1 ya está disponible y todavía no funciona.
user1139733
2
Me está funcionando nuevamente en iOS 7.1 (yendo directamente a la página de Comentarios) y otros han indicado lo mismo en el enlace devsdk. Para mí, solo tuve que cambiar el esquema de itms-apps a http y funciona perfectamente en iOS 7.1. En iOS 7.0 todavía solo va a la página principal de la aplicación, pero al menos el enlace http funciona, a diferencia del antiguo enlace itms-apps que solo mostraría una página en blanco.
stonemonk
Ahora puedo confirmar positivamente que el método "antiguo" (Purple + Software) funciona perfectamente en iOS7.1. Puede ver una prueba en mi aplicación: j.mp/josegg En la pantalla principal, haga clic en "configuración" -> haga clic en "Obtener gratis" Js "-> luego haz clic en" Califícanos "-> serás llevado directamente a la pestaña de revisión de la página de mi aplicación en la tienda de aplicaciones (obviamente solo funciona para iOS 7.1+ o iOS 6.1.4-)
Joselito