O iTunes revê o URL e o iOS 7 (peça ao usuário para avaliar nosso aplicativo) a AppStore mostra uma página em branco

158

Alguém sabe se a técnica usada para pedir ao usuário que avalie nosso aplicativo e abra para ele a App Store diretamente na página de classificação ainda está funcionando no iOS 7?

Eu costumava abrir esse URL do meu aplicativo:

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

Mas parece que não está mais funcionando (a AppStore mostra uma página em branco). Eu também tentei este URL sem sorte:

http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?pageNumber=0&sortOrdering=1&type=Purple+Software&mt=8&id=353372460
Samuel
fonte
Depois de analisar o código-fonte do UAAppReviewManager, parece que há realmente um problema com o iOS7. Para que eles usem o URL padrão do aplicativo, o usuário precisa procurar o botão de taxa: - /
Samuel
Parece que o link de revisão do ios 7 não funciona. Vou alterar meu código para o URL normal do link do aplicativo. O usuário terá que clicar no botão de revisão.
Emmy
4
O segundo link que você postou agora funciona no iOS 7! Vai direto para a página de revisão
Maximilian Litteral 30/03
para mim .... o primeiro URL parece funcionar. Acabei de substituir o meu número de ID
Nilesh Kumar
Possível duplicata do link
g00glen00b 8/17/17

Respostas:

198

A partir do iOS7, o URL mudou e não pode direcionar para a página de revisão, mas apenas para o aplicativo

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

Onde APP_ID precisa ser substituído pelo seu ID do aplicativo. Com base no ID do aplicativo da pergunta, seria o seguinte

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

Observe o id na frente do número ... essa string é id 353372460, não apenas 353372460

Para qualquer coisa anterior ao iOS7, é necessário usar o URL 'antigo', apenas aqueles que o direcionam diretamente para a página de revisão. Você também deve observar que essas chamadas só funcionam em dispositivos . A execução no simulador não fará nada, pois o simulador não possui o aplicativo App Store instalado.


Veja, por exemplo, o Appirater para uma implementação. https://github.com/arashpayan/appirater

Não posso ajudá-lo com as especificações do phonegap (nunca o usei). Mas basicamente se trata de verificar a versão do iOS que seu usuário está executando e usar o URL antigo ou o novo URL iOS7.

Frank
fonte
18
Na verdade, isso abre o aplicativo e não a guia de revisão.
Idan
3
Sim, isso é verdade, mas no iOS7, por enquanto, é o melhor que pode ser alcançado no momento.
19413 Frank
O novo aplicativo do Facebook mostra a página da loja de aplicativos dentro do próprio aplicativo no iOS 7. Alguém sabe como eles fazem isso?
ERIC
1
Diferente do iRate, você DEVE usar o link acima com as informações / LANGUAGE / app / idAPP_ID
Dan
6
Você deseja remover o idioma, o Appirater também terá o mesmo problema se o dispositivo estiver definido para um idioma que não seja equivalente à loja iTunes, você obterá uma página em branco (por exemplo, inglês britânico), se você remover o bit de idioma, ele ainda funcionará e a loja abrirá. no idioma do proprietário.
22413 Chris
166

O seguinte URL funciona perfeitamente no iOS 7.1:

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

onde xxxxxxxxé o ID do seu aplicativo.

ATUALIZAÇÃO . Funciona no iOS 9.3.4 e iOS 10 GM (por Jeet)

mkll
fonte
5
Isso está quebrado novamente no 8.0 DP 5! Relate-o agora como um bug e espero que possamos corrigi-lo no lançamento da produção.
Cliff Ribaudo
6
Funciona para eu ir diretamente para a página de revisão da App Store.app. Construído com Xcode 6. Verificado no iOS 8.0, iOS 7.1.2, iPhone 5 e iPhone 4.
jclee
7
Eu descobri. O tipo deve sempre ser igual ao software roxo - é uma coisa da maçã.
Matt Parkins
2
Funciona corretamente no iPhone e no iPad no iOS 8.3. Acabei de testar :) Obrigado!
alones
2
Funciona bem no iPod Gen 5, iOS 9.0.1.
haxpor
47

Isso funciona do meu lado (Xcode 5 - iOS 7 - Dispositivo !):

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

Para versões inferiores ao iOS 7, use a antiga:

itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=YOUR_APP_ID
Idan
fonte
1
Isso fornece uma tela em branco nos meus dispositivos iOS7 (usando o Xcode 5), esse era o URL que ainda estou usando para o iOS6. Para o iOS 7, estou usando o detalhado na minha resposta. Estranho que esteja funcionando para você.
Frank
@Frank, como você abre este link? Estou usando o iRate e ele está usando este link, talvez tente usá-lo e verifique qual é exatamente a diferença do seu código.
Idan
2
Estou usando o seguinte código [[UIApplication sharedApplication] openURL:[NSURL URLWithString:ITUNES_APP_URL_IOS7]];
Frank
1
self.appStoreID nem compila
ngb 11/01
1
Ele está quebrado novamente no iOS 8 DP5. Comece a relatar isso como um bug e espero que eles sejam corrigidos por produção! Caso contrário, estaremos aguardando até 8.1 novamente.
Cliff Ribaudo
18

Alternativa simples de uma linha de código: ** Veja também os comentários do simulador abaixo **

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

EDIT: Agora que o iOS 7.1 permite o link direto para a guia Comentários na App Store, vale a pena investir as linhas extras de código para chegar lá diretamente: veja outras respostas para o resto.

aqui estamos usando, em http: vez de itms-apps: , deixe o iOS fazer o resto do trabalho

Eu obtenho os mesmos resultados de teste em dispositivos iOS 6.1 e 7 (iPad / iPhone / iPod touch 4)

Especificamente, este atalho para o iOS 6 leva o usuário à Detailsguia e não à Reviewsguia.

O Purple+Softwarelink leva o usuário até a guia Comentários no iOS 6, o que é obviamente preferido se você souber como verificar o sistema operacional.

Nota importante : Isso causará erros no simulador para iOS 5.1, 6.1 e 7.
Não é possível abrir a página O Safari não pode abrir a página porque o endereço é inválido (sabemos que é um URL válido fora do simulador, em qualquer navegador)

Só para esclarecer : no iOS 7: http://fornece a mesma experiência que itms-apps:sem atrasos visíveis.

* lembre-se de que o comportamento do simulador mencionado acima. Isso não é totalmente diferente de tentar acessar a câmera por meio de um simulador: o simulador não é o lugar para testá-lo. *

Jason R. Escamilla
fonte
1
Não tenho certeza de como exatamente você está respondendo à pergunta. Esse link que você forneceu não faz o que o OP está solicitando, ou seja, abre a página "comentários" na App Store. Vincular diretamente ao aplicativo em si é trivial.
Asem H.
Dado que você não pode vincular diretamente aos Comentários no iOS7, isso parece uma solução perfeitamente razoável.
Nick Cecil
Embora atualmente seja verdade, não há garantia de que o http continue encaminhando para o aplicativo App Store. A Apple pode decidir no futuro enviar links de aplicativos http para o Safari, quem sabe? Mais seguro para usar o protocolo direto.
poetmountain
Exceto que a Apple alterou o protocolo direto para que não funcione no iOS7, a menos que você use um formato diferente. Portanto, não é realmente "mais seguro".
Mundo Real
1
Em relação ao http:vs itms-apps:, consegui vincular diretamente à guia de comentários com itms-appse não httpno iOS 7.1.1.
Zekel 04/07
17

É possível abrir a página de revisão diretamente do aplicativo no iOS7. Por favor, use o seguinte URL ...

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

Isso definitivamente funciona .. :)

Murali
fonte
Eu não tenho idéia .. Você fez o check-in do iOS8?
Murali
1
Não, não tem. Arquive um relatório de bug!
Cliff Ribaudo
Estou no iOS 8.1.1 e esse URL vai diretamente para a página de revisão.
mrzzmr
1
O que é "type = Purple + Software" na String?
Darko
16

Não está claro quais versões do iOS este é apoiado por, mas como parte de iOS 10,3 há um novo parâmetro de consulta que pode ser adicionado à URL: action=write-review. Eu testei isso no iOS 10.2 e 9.3.5 e funciona. No entanto, como não funciona no iOS 7.1.2, foi adicionado suporte entre o iOS 8.0 e 9.3.5. É necessária mais investigação!

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

Isso abrirá o diálogo "Escreva uma crítica" , em vez de apenas mostrar a guia Revisão.

Joseph Duffy
fonte
2
Cheers bro :) Esta foi a melhor solução até agora. Ao ponto e serve completamente ao propósito. Para mim, esta é a resposta aceitável. Testado para estar funcionando no 9.3.5 e no iOS 10.2.1. Diretamente abre escrever uma crítica. Usei isso: itms-apps: //itunes.apple.com/gb/app/id1136613532? Action = write-review & mt = 8, para fazer com que o usuário escreva diretamente a crítica.
Ankit Kumar Gupta
... mas gb não se refere à Grã-Bretanha? Em caso afirmativo, isso encaminhará todos os usuários para a App Store do Reino Unido?
Robert Gummesson
@ Robert Yeh, o link que eu tinha originalmente / gb no início. Eu acho que ele ainda iria abrir a loja do usuário, mas eu removi-lo da resposta
Joseph Duffy
Ele funciona no iOS10, mas parece não estar funcionando no iOS11 (usando o beta 9). Alguma idéia se algo mudou?
ZS 4/17
Isso funciona no iOS 11.1.1. Obrigado! Deve ser a resposta aceita, @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;
}
Vai
fonte
1
O Appirater foi atualizado novamente para corrigir outro problema. A principal mudança consistiu em alterar a verificação de < 7.1para < 8.0para que o templateReviewURLiOS7link seja usado para todas as versões do iOS 7.x em vez de usar o link antigo para tudo entre> = 7.1 e <8.0.
Markus
9

O link de revisão foi quebrado novamente no iOS9. Ao fazer algumas experiências, eu descobri que a Apple reverteu o que era antes do iOS7. Então você tem que fazer:

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

Onde 247423477está o seu ID do aplicativo de 9 dígitos (a principal diferença é que você deve anexar &onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Softwareapós o ID do aplicativo).

Ser Pounce
fonte
5

Todas as respostas acima foram descontinuadas (iOS 7, mas podem funcionar), portanto, forneço a nova maneira que a Apple recomenda para fornecer links para os aplicativos. O link para seu aplicativo é o do iTunes (use o Link de cópia), este é recomendado para uso em código:

Swift 3.0

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

Ou melhor - trate o opcional corretamente e lide com a possibilidade de não conseguir acessar o link:

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

Objetivo-C

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

então você pode chamar APP_URL_STRINGseu código:

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

Observe que esta é a maneira recomendada agora pela Apple, pois o método anterior de processamento de links de redirecionamento foi descontinuado e não é suportado.

O link para todos os seus aplicativos, se você tiver mais de um:

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

O link do aplicativo acima é recomendado para uso em códigos ou links que não são vistos diretamente pelo usuário. Se você deseja fornecer um link que possa ser visto e lembrado pelo usuário, use o seguinte: http://appstore.com/calcfast

Sverrisson
fonte
3
isso não
direciona
@ngb, você pode acessar apenas os aplicativos ou a página do desenvolvedor. Por favor, ao votar, dê uma razão válida ou falha. Não estou mostrando links para a página de revisão, mas o usuário pode clicar facilmente na taxa.
Sverrisson
1
Este é o método recomendado pela Apple correto. Qualquer outra coisa é um hack.
Martin Marconcini
@Bingo O que você quer dizer? O link que eu forneço termina em & mt = 8 ans links para a página de revisão. Na minha resposta, estou me referindo ao que a Apple recomenda, seu link pode funcionar agora e talvez no seu caso, mas funciona para usuários em outro país ou você tem certeza de que não será alterado?
Sverrisson
4

Usar esse URL foi a solução perfeita para mim. Leva o usuário diretamente para oWrite a Review section . Créditos para @Joseph Duffy.

Para um código de exemplo, tente o seguinte:

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

Aqui showAlert é uma função personalizada para um UIAlertController.

Ankit Kumar Gupta
fonte
3

Tenho isso para obter o ID do produto automaticamente e gerar links para a revisão da App Store e a página do produto .

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

Página de revisão do aplicativo aberto

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

Abrir a página da App Store da aplicação

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

Diz-se que esse bug será corrigido no iOS7.1. Leia aqui no fórum corona e aqui no iPhoneDevSDK .

Joselito
fonte
3
Infelizmente, o iOS 7.1 já saiu e ainda não está funcionando.
user1139733
2
Ele está funcionando para mim no iOS 7.1 novamente (indo diretamente para a página Comentários) e outros indicaram o mesmo no link devsdk. Para mim, eu só precisei mudar o esquema de itms-apps para http e funciona perfeitamente no iOS 7.1. No iOS 7.0, ele ainda vai apenas para a página principal do aplicativo, mas pelo menos o link http funciona, ao contrário do antigo link itms-apps, que mostraria apenas uma página em branco.
Stonemonk
Agora posso confirmar positivamente que o método "antigo" (Roxo + Software) está funcionando perfeitamente no iOS7.1 Você pode ver uma prova no meu aplicativo: j.mp/josegg Na tela principal, clique em "configurações" -> clique em "Get Free Js "-> clique em" Classifique-nos "-> você será direcionado diretamente para a guia de revisão da página do meu aplicativo na loja de aplicativos (obviamente só funciona para iOS 7.1+ ou iOS 6.1.4-)
Joselito