Como você adiciona uma compra no aplicativo a um aplicativo iOS? Quais são todos os detalhes e existe algum código de exemplo?
Isso pretende ser uma espécie de captura geral de como adicionar compras no aplicativo a aplicativos iOS
ios
objective-c
swift
cocoa-touch
in-app-purchase
Jojodmo
fonte
fonte
Respostas:
Usuários Swift
Os usuários do Swift podem conferir Minha resposta rápida para esta pergunta .
Ou confira a resposta de Yedidya Reiss , que traduz esse código de Objective-C para Swift.
Usuários do Objective-C
O restante desta resposta está escrito em Objective-C
App Store Connect
My Apps
e clique no aplicativo ao qual você deseja adicionar a compraFeatures
cabeçalho e selecioneIn-App Purchases
à esquerda+
ícone no meionon-consumable
. Se você iria enviar um item físico para o usuário ou fornecer algo que ele possa comprar mais de uma vez, você escolheriaconsumable
.tld.websitename.appname.referencename
isso funcionará melhor; por exemplo, você pode usarcom.jojodmo.blix.removeads
cleared for sale
e escolha o nível de preço como 1 (99 ¢). A camada 2 seria de US $ 1,99 e a camada 3 seria de US $ 2,99. A lista completa está disponível se você clicar emview pricing matrix
Eu recomendo que você use a camada 1, porque geralmente é o máximo que alguém pagará para remover anúncios.add language
botão azul e insira as informações. Tudo isso será mostrado ao cliente, portanto, não coloque nada que você não queira que ele vejahosting content with Apple
escolher nãoscreenshot for review
FOR NOW , tudo o que pularmos, voltaremos.Pode levar algumas horas para que o seu ID do produto seja registrado
App Store Connect
, portanto seja paciente.Configurando seu projeto
Agora que você configurou suas informações de compra no aplicativo na App Store Connect, entre no seu projeto Xcode e vá para o gerenciador de aplicativos (ícone azul semelhante a uma página na parte superior de onde estão seus métodos e arquivos de cabeçalho) clique em seu aplicativo em metas (deve ser o primeiro) e vá para geral. Na parte inferior, você deve
linked frameworks and libraries
clicar no pequeno símbolo de adição e adicionar a estrutura.StoreKit.framework
Se você não fizer isso, a compra no aplicativo NÃO funcionará!Se você estiver usando o Objective-C como o idioma do seu aplicativo, pule estas cinco etapas . Caso contrário, se você estiver usando o Swift, poderá seguir Minha resposta rápida para esta pergunta, aqui ou, se preferir usar o Objective-C para o código de compra no aplicativo, mas estiver usando o Swift no seu aplicativo, poderá fazer o seguinte :
Criar um novo
.h
arquivo (cabeçalho), indo paraFile
>New
>File...
( Command ⌘+ N). Este arquivo será referido como "Seu.h
arquivo" no restante do tutorialQuando solicitado, clique em Criar Bridging Header . Este será o nosso arquivo de cabeçalho de ponte. Se você não for solicitado, vá para a etapa 3. Se for solicitado, pule a etapa 3 e vá diretamente para a etapa 4.
Crie outro
.h
arquivo nomeadoBridge.h
na pasta principal do projeto. Em seguida, vá para o Application Manager (o ícone azul semelhante a uma página), selecione o aplicativo naTargets
seção e clique emBuild Settings
. Localize a opção que diz Swift Compiler - Geração de código e defina a opção Objective-C Bridging Header comoBridge.h
No seu arquivo de cabeçalho de ponte, adicione a linha
#import "MyObjectiveCHeaderFile.h"
, ondeMyObjectiveCHeaderFile
está o nome do arquivo de cabeçalho que você criou na etapa um. Portanto, por exemplo, se você nomear seu arquivo de cabeçalho InAppPurchase.h , você adicionará a linha#import "InAppPurchase.h"
ao arquivo de cabeçalho da ponte.Criar um novo Objective-C Métodos (
.m
arquivo), indo paraFile
>New
>File...
( Command ⌘+ N). Nomeie o mesmo que o arquivo de cabeçalho que você criou na etapa 1. Por exemplo, se você chamou o arquivo na etapa 1 InAppPurchase.h , você chamaria esse novo arquivo de InAppPurchase.m . Este arquivo será referido como "Seu.m
arquivo" no restante do tutorial.Codificação
Agora vamos entrar na codificação real. Adicione o seguinte código ao seu
.h
arquivo:Em seguida, você precisa importar a
StoreKit
estrutura para o seu.m
arquivo, além de adicionarSKProductsRequestDelegate
eSKPaymentTransactionObserver
após a sua@interface
declaração:e agora adicione o seguinte ao seu
.m
arquivo, esta parte fica complicada, por isso sugiro que você leia os comentários no código:Agora você deseja adicionar seu código para o que acontecerá quando o usuário concluir a transação. Para este tutorial, usamos a remoção de adições. Você precisará adicionar seu próprio código para o que acontece quando a exibição do banner for carregada.
Se você não tiver anúncios em seu aplicativo, poderá usar qualquer outra coisa que desejar. Por exemplo, podemos tornar a cor do fundo azul. Para fazer isso, gostaríamos de usar:
Agora, em algum lugar do seu
viewDidLoad
método, você desejará adicionar o seguinte código:Agora que você adicionou todo o código, entre no seu arquivo
.xib
oustoryboard
e adicione dois botões, um dizendo compra e outro dizendo restauração. Conecte otapsRemoveAds
IBAction
botão de compra que você acabou de fazer e orestore
IBAction
botão de restauração. Arestore
ação verificará se o usuário comprou anteriormente a compra no aplicativo e oferecerá a compra no aplicativo gratuitamente, caso ainda não a tenha.Enviando para revisão
Em seguida, entre no App Store Connect ,
Users and Access
clique noSandbox Testers
cabeçalho e clique no+
símbolo à esquerda onde está escritoTesters
. Você pode simplesmente colocar coisas aleatórias para o nome e o sobrenome, e o e-mail não precisa ser real - você só precisa se lembrar dele. Coloque uma senha (da qual você precisará se lembrar) e preencha o restante das informações. Eu recomendo que você marque aDate of Birth
data que tornaria o usuário 18 anos ou mais.App Store Territory
TEM que estar no país correto. Em seguida, efetue logout da sua conta existente do iTunes (você poderá efetuar login novamente após este tutorial).Agora, execute o aplicativo no seu dispositivo iOS, se você tentar executá-lo no simulador, a compra será sempre erro, você TEM QUE executá-lo em seu dispositivo iOS. Quando o aplicativo estiver em execução, toque no botão de compra. Quando você for solicitado a fazer login na sua conta do iTunes, faça o login como o usuário de teste que acabamos de criar. Em seguida, quando solicitar que você confirme a compra de 99 ¢ ou o que quer que você defina também o preço, FAÇA UM INSTANTÂNEO DE TELA, isto é o que você usará para o seu
screenshot for review
na App Store Connect. Agora cancele o pagamento.Agora, vá para loja App Ligue , em seguida, ir para a
My Apps
>the app you have the In-app purchase on
>In-App Purchases
. Em seguida, clique na sua compra no aplicativo e clique em editar nos detalhes da compra no aplicativo. Depois de fazer isso, importe a foto que você acabou de tirar no seu iPhone para o seu computador e carregue-a como captura de tela para revisão e, em notas de revisão, coloque seu e-mail e senha de USUÁRIO DE TESTE . Isso ajudará a apple no processo de revisão.Depois de fazer isso, volte para o aplicativo no seu dispositivo iOS, ainda conectado como a conta de usuário de teste e clique no botão comprar. Desta vez, confirme o pagamento Não se preocupe, isso NÃO cobrará QUALQUER dinheiro em sua conta, teste as contas de usuário e receba todas as compras no aplicativo gratuitamente Depois de confirmar o pagamento, verifique se o que acontece quando o usuário compra seu produto realmente acontece. Caso contrário, será um erro no seu
doRemoveAds
método. Novamente, eu recomendo usar a alteração do plano de fundo para azul para testar a compra no aplicativo. Porém, essa não deve ser sua compra real no aplicativo. Se tudo funcionar e você estiver pronto! Apenas inclua a compra no aplicativo em seu novo binário ao enviá-lo para o App Store Connect!Aqui estão alguns erros comuns:
Registrado:
No Products Available
Isso pode significar quatro coisas:
kRemoveAdsProductIdentifier
no código acimaSe não funcionar pela primeira vez, não fique frustrado! Não desista! Demorei cerca de 5 horas seguidas até que eu conseguisse fazer isso funcionar, e cerca de 10 horas procurando o código certo! Se você usar o código acima exatamente, ele deverá funcionar bem. Sinta-se livre para comentar, se você tiver quaisquer perguntas em tudo .
Espero que isso ajude todos aqueles que desejam adicionar uma compra no aplicativo ao aplicativo iOS. Felicidades!
fonte
Basta traduzir o código Jojodmo para Swift:
fonte
Resposta rápida
Isso visa complementar minha resposta Objective-C para usuários Swift, para impedir que a resposta Objective-C fique muito grande.
Configuração
Primeiro, configure a compra no aplicativo em appstoreconnect.apple.com . Siga a parte inicial da minha resposta Objective-C (etapas 1 a 13, abaixo do cabeçalho da App Store Connect ) para obter instruções sobre como fazer isso.
Pode demorar algumas horas para o seu ID do produto se registrar no App Store Connect, por isso seja paciente.
Agora que você configurou suas informações de compra no aplicativo no App Store Connect, precisamos adicionar a estrutura da Apple para compras
StoreKit
no aplicativo.Entre no seu projeto do Xcode e vá para o gerenciador de aplicativos (ícone azul semelhante a uma página na parte superior da barra esquerda, onde estão os arquivos do seu aplicativo). Clique no seu aplicativo em destinos à esquerda (deve ser a primeira opção) e vá para "Recursos" na parte superior. Na lista, você verá a opção "Compra no aplicativo". Ative esse recurso e o Xcode será adicionado
StoreKit
ao seu projeto.Codificação
Agora, vamos começar a codificar!
Primeiro, crie um novo arquivo rápido que gerencie todas as suas compras no aplicativo. Eu vou ligar
IAPManager.swift
.Neste arquivo, vamos criar uma nova classe, chamada
IAPManager
isSKProductsRequestDelegate
eSKPaymentTransactionObserver
. No topo, certifique-se de importarFoundation
eStoreKit
Em seguida, adicionaremos uma variável para definir o identificador de nossa compra no aplicativo (você também pode usar um
enum
, que seria mais fácil de manter se você tiver vários IAPs).Vamos adicionar um inicializador para a nossa classe a seguir:
Agora, vamos adicionar as funções necessárias para
SKProductsRequestDelegate
eSKPaymentTransactionObserver
de trabalho:Adicionaremos a
RemoveAdsManager
turma mais tardeAgora, vamos adicionar algumas funções que podem ser usadas para iniciar uma compra ou restaurar compras:
Em seguida, vamos adicionar uma nova classe de utilitários para gerenciar nossos IAPs. Todo esse código pode estar em uma classe, mas ter vários torna um pouco mais limpo. Vou criar uma nova classe chamada
RemoveAdsManager
, e nela, colocar algumas funçõesAs três primeiras funções,
removeAds
,restoreRemoveAds
eareAdsRemoved
, são funções que você vai chamar para fazer certas ações. Os quatro últimos são aqueles que serão chamados porIAPManager
.Vamos adicionar algum código às duas primeiras funções
removeAds
erestoreRemoveAds
:E, finalmente, vamos adicionar um código às cinco últimas funções.
Juntando tudo, temos algo parecido com isto:
Por fim, você precisa adicionar uma maneira de o usuário iniciar a compra e ligar
RemoveAdsManager.removeAds()
e iniciar uma restauração e ligarRemoveAdsManager.restoreRemoveAds()
, como um botão em algum lugar! Lembre-se de que, de acordo com as diretrizes da App Store, você precisa fornecer um botão para restaurar as compras em algum lugar.Enviando para revisão
A última coisa a fazer é enviar seu IAP para análise na App Store Connect! Para obter instruções detalhadas sobre como fazer isso, você pode seguir a última parte da minha resposta Objective-C , no cabeçalho Submetendo para revisão .
fonte
O RMStore é uma biblioteca iOS leve para compras no aplicativo. Ele envolve a API StoreKit e fornece blocos úteis para solicitações assíncronas. Comprar um produto é tão fácil quanto chamar um único método.
Para usuários avançados, essa biblioteca também fornece verificação de recebimento, downloads de conteúdo e persistência de transação.
fonte
Sei que estou atrasado para postar isso, mas compartilho experiências semelhantes quando aprendi as regras do modelo IAP.
A compra no aplicativo é um dos fluxos de trabalho mais abrangentes no iOS implementados pela estrutura do Storekit. A documentação toda está muito claro se você paciência para lê-lo, mas é um pouco avançado na natureza de tecnicidade.
Para resumir:
1 - Solicite os produtos - use as classes SKProductRequest e SKProductRequestDelegate para emitir a solicitação de IDs do produto e recebê-las de volta na sua própria loja itunesconnect.
Esses SKProducts devem ser usados para preencher a interface da loja, que o usuário pode usar para comprar um produto específico.
2 - Emitir solicitação de pagamento - use SKPayment & SKPaymentQueue para adicionar pagamento à fila de transações.
3 - Monitorar a fila de transações para atualização de status - use o método updatedTransactions do protocolo SKPaymentTransactionObserver para monitorar o status:
4 - Restaurar o fluxo do botão - use restoreCompletedTransactions do SKPaymentQueue para fazer isso - a etapa 3 cuidará do resto, juntamente com os seguintes métodos do SKPaymentTransactionObserver:
Aqui está um tutorial passo a passo (criado por mim como resultado de minhas próprias tentativas de entendê-lo) que explica isso. No final, ele também fornece um exemplo de código que você pode usar diretamente.
Aqui está outro que eu criei para explicar certas coisas que somente o texto poderia descrever de uma maneira melhor.
fonte