Realizado

Correção no Fluxo De Assinatura Ios e Android (Assinatura/Cancelamento de Assinatura)

Publicado em 27 de Fevereiro de 2024 dias na TI e Programação

Sobre este projeto

Aberto

Possuo um aplicativo desenvolvido em Flutter versão 3.19.1 publicado na Google Play e na Apple Store, meu aplicativo possui dois planos de assinatura mensal e anual tanto na versão Android quanto na versão iOS.

Preciso que seja realizada uma revisão de código em apenas dois pontos do aplicativo e que sejam feitas os ajustes necessários para atingir o comportamento esperado que irei detalhar abaixo.

Cenário Inicial (Que já acontece): Eu como usuário cadastrado e logado no aplicativo onde ainda não sou assinante, visualizo os conteúdos "livres" onde não preciso ser assinante para acessá-los, quando tento acessar um conteúdo "restrito" (com cadeado), vejo uma modal explicando que para visualizar os conteúdos "restritos" devo assinar um plano e nesta modal possui um botão "assinar" ao clicá-lo visualizo dois botões  de planos com seus respectivos títulos e preços, são eles (mensal e anual), ao clicar em qualquer um deles, é acionado então o fluxo padrão de "subscription" de cada loja seja "apple store" ou "google play", após concluir a assinatura o aplicativo exibe uma mensagem de "assinatura efetivada com sucesso" e automaticamente retorno a mesma tela que estava anteriormente porém os cadeados foram removidos e agora eu passo a ter acesso tanto ao conteúdo "livre" quanto ao conteúdo "restrito", primeiro ciclo é concluído aqui, a partir dai o aplicativo verifica a cada navegação de tela se minha assinatura ainda está "vigente", caso esteja eu continuo como assinante, caso não esteja, por ter sido cancelada, ou por não ter sido renovada e já tenha atingido a data de expiração da vigência atual meu acesso ao conteúdo restrito deve ser removido.

Bom agora que expliquei o cenário quero pontuar que no Android tudo isso já acontece com sucesso, talvez quem tenha muito conhecimento em assinatura (Purchase/Subscription) ainda assim entenda que precise também de algum ajuste, mas eu garanto que está tudo funcionando como esperado no Android, já no Ios o fluxo de assinatura funciona até certa parte eu assino ele retorna para o aplicativo e libera meu acesso, porém parece que as transações estão ficando "pendentes de confirmação" mesmo eu tendo chamado o método ".Completepurchase", e ai o app se perde e está tirando o acesso de quem é assinante indevidamente, e o fluxo não está funcionando o ios conforme esperado.

O aplicativo já é funcional, já está nas duas lojas, eu preciso mesmo dessa revisão apenas nos códigos que se referem a assinaturas/subscpritions.

Critérios de aceite tanto no Android quanto no iOS:
  1) Usuários NÃO assinantes devem conseguir contratar um dos dois planos de assinatura (mensal/anual) e imediatamente ter o acesso liberado ao conteúdo restrito. (Isso o APP já faz só deve continuar fazendo assim, talvez algum pequeno ajuste mas se o desenvolvedor considerar que é necessário)

  2) Usuários assinantes devem conseguir cancelar suas assinaturas a qualquer momento, e após o cancelamento o app deverá remover o acesso ao conteúdo restrito, seguindo as regras das lojas, pois após o cancelamento a assinatura ainda tem um período de vigência até o final da recorrência contratada, se é mensal ainda terá acesso até o final do período mensal, se anual até o final do período anual. (Essa lógica já existe, e tem funcionado muito bem para o Android, mas no iOS eu não consegui simular ainda, e acredito que precise sim de ajustes)

  3) No código ao capturar todas as compras/assinaturas realizadas devemos ver realmente a quantidade de assinaturas que o usuário realmente realizou e efetivou, pode parecer confuso esse critério mas deixando ele mais claro é que talvez este seja o ponto onde eu estou errando e no iOS precise de ajuste, pois somente no Ios o usuário assina o plano mensal, o conteúdo é liberado, quando ele fecha o app e navega por algumas telas o acesso é removido, ai tem momentos que ele consegue assinar novamente mesmo já tendo uma assinatura contratada e dentro da vigência, ai chega uma hora que no listener (updatepurchase) que captura as transações tem muitas transações "pendentes de confirmação", curioso que isso não acontece no android, espero ter sido claro.

Neste momento a atuação será realizada via TeamViewer, ou Google Meet ou alguma ferramenta de acesso remoto, eu já tenho o ambiente totalmente configurado, conta de teste configurada no meu aparelho iOS e Android e o DEBUG local direto nos dispositivos também já funcionando.

Atenção: Peço encarecidamente que somente envie propostas se tiver o conhecimento necessário para atuação e resolução do problema, tenho um pouco de urgência.

Contexto Geral do Projeto

Um aplicativo com conteúdo (Textos, Imagens, Audios e Videos) parte do conteúdo é gratuito, para acessar o restante do conteúdo o usuário precisa assinar um dos dois planos, seja mensal ou anual, todo o aplicativo já funciona perfeitamente falta apenas implementar um método de verificação logo que abre o aplicativo para validar se o usuário está com a assinatura toda em dia e liberar o conteúdo restrito.

Categoria TI e Programação
Subcategoria Programação de Apps para Android, iOS e outros
Qual é o alcance do projeto? Bug ou alteração pequena
Isso é um projeto ou uma posição de trabalho? Um projeto
Tenho, atualmente Não se aplica
Disponibilidade requerida Conforme necessário
Plataformas exigidas Android, iPhone
Eu preciso Eu preciso modificar um app existente
Tipo de aplicativo Loja online
Precisa de back-end Não
Gateway de pagamento Sim

Prazo de Entrega: 27 de Março de 2024

Habilidades necessárias