Pergunta

Eu estou tentando teste nas compras app no ??meu iPhone e correndo em um problema onde os IDs dos produtos I solicitar informações para acabam sendo devolvidos para mim como IDs de produtos inválidos no método "didRecieveResponse".

Eu tenho:

  • Criado um no produto de loja associado a este aplicativo. É partidas ID pacote tudo o resto. Ele foi liberado para venda e aprovado pelo desenvolvedor.
  • a certeza meu perfil novo provisionamento tem na loja compras de aplicativos habilitados e tem o nome do aplicativo completo: "com.domain.appname"
  • a certeza este é o perfil de aprovisionamento sendo usado para assinar o aplicativo para o meu iPhone.
  • a certeza que "com.domain.appname" é o ID do aplicativo usado para construir o perfil de aprovisionamento.
  • a certeza que "com.domain.appname" é usado no meu arquivo plist como o identificador do pacote.

Tudo parece estar no lugar, porém eu ainda recebo meus produtos devolvidos para mim como IDs inválidos.

Este é o código que estou usando:


- (void)requestProductData {
   SKProductRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithObject: @"com.domain.appname.productid"]];
   request.delegate = self;
   [request start];
}

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
   NSArray *myProducts = response.products;
   NSArray *myInvalidProducts = response.invalidProductIdentifiers;

   for(int i = 1; i < myInvalidProducts.count; ++i)
   {
      std::cout <<"invalid product id = " << [[myInvalidProducts objectAtIndex:i] UTF8String] << std::endl;
   }

   for(int i = 0; i  < myProducts.count; ++i)
   {
      SKProduct * myProduct = [myProducts objectAtIndex:i];
      std::cout << "Product Info:"  << std::endl;
      std::cout << "\tlocalizedTitle         = "  << [[myProduct localizedTitle] UTF8String]  << std::endl;
      std::cout << "\tlocalizedDescription   = "  << [[myProduct localizedDescription] UTF8String]  << std::endl;
      std::cout << "\tproductIdentifier      = "  << [[myProduct productIdentifier] UTF8String]  << std::endl;
      std::cout << "\tprice                  = "  << [[myProduct price] doubleValue]  << std::endl;
      std::cout << "\tpriceLocale            = "  << [myProduct priceLocale]  << std::endl;
   }

   [request autorelease];
}

Todos os meus IDs produtos aparecem nas impressões inválidos e nenhum deles aparecer no "Informações do produto". Impressões

Todas as sugestões seria muito apreciada ...

P.S. Sim, este é construído como Objective-C / C ++.

Foi útil?

Solução 7

OK, então depois de fazer tudo o que eu poderia pensar e ler todos os fóruns lá fora, aqui é o que funcionou:

Redo Everyhing.

  1. remover todos os seus perfis de aprovisionamento do Xcode Organizer.
  2. Fechar Xcode.
  3. Criar um novo aplicativo ID.
  4. Criar um novo perfil de aprovisionamento com a nova App ID.
  5. criar uma nova distribuição de provisionamento perfil com o novo App ID.
  6. Criar um novo aplicativo no iTunes Connect
  7. Inicie o Xcode, instalar seus dois novos perfis de aprovisionamento. Atualização yoru ID pacote para corresponder. Também certifique-se suas cordas id que os pedidos de aplicativos estão atualizados para refletir o seu ID de pacote.
  8. Crie seu projeto no modo de distribuição com a nova distribuição perfil de aprovisionamento.
  9. Enviar seu novo binário. (Deixe-un-rejeitada)
  10. Configure seu teste de compra no aplicativo.
  11. Crie seu projeto no modo de depuração com o novo perfil de aprovisionamento.
  12. solicitação de teste.

Isto é o que demorou para chegar minha loja de trabalho. Meu melhor palpite é que os servidores back-end da Apple se ferrar-se, por vezes, e você só precisa de começar do zero.

Espero que isso ajude a todos!

Outras dicas

Eu tentei de tudo sugerido nos fóruns da Apple e aqui, e ainda não poderia fazê-lo funcionar. Encontrou a solução -. Suas necessidades de aplicativos a serem transferidos por Xcode para a caixa de areia para ser habilitado

óbvio, certo? Bem, se você estiver trabalhando com uma atualização para uma conta existente, o dispositivo ainda tratá-lo como um aplicativo App Store-instalado.

Excluir-lo, em seguida, transferi-lo novamente. Ele deve funcionar agora:)

Excluindo o aplicativo no iPhone testar e reinstalar funcionou. Também eu também tinha esperou 8 horas desde a apresentação do item de compra in-app.

Por favor, siga os passos abaixo:

  1. Entre na iTunes conectar usando sua conta de desenvolvedor ( https: // itunesconnect.apple.com/WebObjects/iTunesConnect.woa/wo/ ).

  2. Vá para a aba - "Contratos, Fiscal e Bancário"

  3. Verifique as Contratos pedido e Contratos em seções de processo.

  4. Confira o "iOS Pago Aplicações" e há informações de contato, Info Banco e informações fiscais são necessidade de configurar.

  5. Quando "iOS aplicativos pagos" célula irá se mover para Contratos na seção Effect, eu vou ser capaz de usar os produtos no App Purchase.

Por favor, vá através do link abaixo para mais informações: http://developer.apple.com/library/ios/#technotes /tn2259/_index.html

Por favor note que quando o iPhone está jailbroken o AppSync pacotes breaks in-app-compras testar completamente. AppSync é instalado com Install0us como uma dependência.

Você não tem que restaurar iOS completamente, apenas desinstalação AppSync no Cydia para teste in-app-compras com sucesso .

Todas as dicas de todos os fóruns, tutoriais e comentários sobre fixind 'produto inválida' não funcionou para mim até que eu removido AppSync.

Eu tenho tido um problema semelhante com um novo aplicativo (v1.0 ainda não lançado na loja) que eu estava tentando adicionar em compras de aplicativos também. Eu configurei tudo, produtos adicionados, etc. e os meus produtos sempre voltava como inválido quando eu fiz um SKProductsRequest.

Eu estava prestes a desistir de todo o processo, quando eu vi um post tangencialmente relacionadas-nos fóruns de desenvolvedores da Apple. Ele sugeriu excluir o aplicativo a partir do dispositivo de teste e e fazer uma nova construção + instalar. Que fez o truque.

Só para ter certeza, eu tentei em outro dispositivo que estava me dando o mesmo problema, e fixa-lo lá também.

É apenas um palpite, mas acho que se o dispositivo tem uma construção em que foi feito com um perfil de aprovisionamento que foi criado antes de adicionar IAP, você precisa remover a construção e colocar em um fresco usando o IAP perfil. (Isto é, simplesmente substituindo o aplicativo no lugar não vai fazer o truque.)

Se nada de errado em seu código, em algum momento ele tem retorno inválido productId apenas porque, você pode precisar de um tempo superior a 10 horas para sua informações mudando. fazendo efeito. Ou, o productId inválida porque algo de errado está permaneceu no seu dispositivo, para que possa tentar mais uma vez com excluir a sua aplicação e construí-lo de novo. com a minha experiência, esperamos que ajuda.

interface do iTunes Connect para IAP foi recentemente atualizado que pode causar inválido: erro.

Você pode agora adicionar um IAP no iTunes conectar sem definir o preço que é padrão para USD 0 e ele vai deixar você guardar essa entrada.

A versão antiga da UI iria reclamar quando você pressionar salvar se você não editar o campo preço de antemão.

É muito fácil perder neste campo completamente e qualquer tentativa de obter informações de usar esse produto ID via qualquer chamada iOS resultaria em inválido: em vez de dizer que você encontrou preço de USD 0 .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top