Uma vez pensei que, para executar meu aplicativo, basta escrever código. Um pouco mais tarde, descobri que é bom complementar o código com o design. Mais tarde, percebi que era necessário procurar um público e promover meu produto para ele. Mas tudo isso pode ser supérfluo se você não seguir as orientações. Abaixo, falarei sobre minha primeira experiência de autodesenvolvimento e por que meu aplicativo não verá usuários.

Para começar, farei uma reserva de que desenvolvo aplicativos há cerca de cinco anos e essa não é minha primeira aplicação em geral, mas a primeira completamente independente, na qual passei de uma ideia para implementação. Aconteceu que no ano passado eu não escrevi o código, mas era gerente de produto. Pareceu-me que nunca mais escreveria código, que era muito chato. Mas nunca começou a quebrar em seis meses, quando me tornou interessante entender ciência de dados e python. E finalmente quebrou em um ano, quando eu realmente queria fazer algo com as mãos e meu pedido começou a aparecer.
O aplicativo na primeira versão foi chamado TinderCall. Ajuda a escapar de datas ou reuniões chatas. Várias vezes me encontrei em uma situação tão embaraçosa que era mais fácil escrever para meu amigo: “Ligue para mim em breve” e esperar. Eu decidi que isso poderia ser um pouco automatizado e me chamo. Também parecia uma ótima maneira de trabalhar com o CallKit e o PushKit. A ideia do aplicativo me veio da leitura de um blog em um instagram, no qual a autora fala sobre como ela sai em encontros (um instagram também é útil). Lá, muitas meninas enfrentaram uma situação semelhante. Um pouco mais tarde, o aplicativo ficou conhecido como "KateCall" ou "Katya, ligue". O nome apareceu em uma conversa com uma amiga que também se inspirou muito na idéia e disse que ela geralmente pede a Katya para fazer isso: "Katya, me ligue." Parece-me um trocadilho bonito.
Então eu comecei a olhar, e o que já está neste tópico. Foram encontradas várias aplicações semelhantes. Não é de admirar, a ideia está na superfície. Para todos eles, ficou claro que essa era a primeira aplicação de alguém. Sem design e com a necessidade de manter o aplicativo aberto para que a chamada seja recebida. Eu decidi que mais uma coisa a fazer. Só que será mais bonito e funcional. Enfim, eu queria esticar o músculo da programação com alguma coisa.
A funcionalidade foi definida da forma mais simples possível: a capacidade de selecionar o nome do chamador e o tempo após o qual a chamada ocorrerá. No início, eu decidi que faria o design sozinho, porque é simples: a cor favorita das pessoas é azul, a grade de elementos é 8 e também ensinei xCode para designers. Mas quando fiz isso, percebi que seria melhor recorrer aos meus colegas designers.

Gostei muito da versão de design e comecei a implementação. No total, o desenvolvimento levou 35 dias desde a criação do projeto até o clique no botão Enviar. 17 confirma e cerca de 40 horas, incluindo escrever código, ler e combater bugs. O maior número de confirmações foi feito por mim às quintas-feiras.
Para aqueles que estão interessados em aprender os detalhes e as limitações do trabalho com o CallKit e o VoIP push, seja bem-vindo aquiO código do projeto está disponível aqui .
Com o CallKit, você pode fazer as chamadas o mais crível possível.
- usa tela de chamada padrão
- melodia e contatos correspondem a real
- a chamada é mostrada no catálogo de chamadas.
Existem várias nuances. Primeiramente, você não pode transferir nenhuma imagem para a tela de chamada padrão. Em segundo lugar, a tela de chamada se comporta de maneira diferente dependendo se o aplicativo está aberto ou não. Portanto, se a chamada estiver no aplicativo, depois da resposta, você precisará mostrar a tela de conversa. E se você responder em uma tela bloqueada, uma tela de conversa padrão será exibida. Em terceiro lugar, o CallKit não pode ser usado na China.
O segundo ponto técnico está relacionado ao push. O temporizador não combina comigo, porque para isso você precisa manter o aplicativo constantemente aberto. Eu estava pensando em fazer push local, mas eles não garantem que o aplicativo seja acordado. Descobriu-se que existe um tipo separado de push para VoIP. Eles têm uma lista de ótimos recursos:
- o aplicativo inicia automaticamente no momento em que o push é recebido, mesmo que tenha sido fechado.
- Não é necessário obter permissão do usuário para usar esse tipo de envio.
- depois de receber o envio é processado imediatamente pelo aplicativo.
Mas você só pode usá-los se houver funcionalidade de chamada. Eu não queria escrever um middleware separado para receber esse push, como se viu, e não precisava. A biblioteca OneSignal permite enviar qualquer tipo de envio remoto do aplicativo dentro do prazo. Honestamente, não consigo imaginar uma situação em que o cumprimento do horário de VoIP ainda possa ser necessário, mas há uma oportunidade de enviá-los. Para o OneSignal, você deve usar um certificado de voip-push separado. Você pode obtê-lo no mesmo local como de costume.
Quando a funcionalidade principal foi concluída, decidi que isso não era suficiente. Eu queria fazer uma tela mais compreensível com o tempo de espera de chamada e, em seguida, obter mais informações sobre mim e os comentários, adicionar tática, adicionar seleção de voz, adicionar ... Consegui parar após a primeira revisão e decidi que conhecendo a AppStore e seu número de restrições, vale a pena enviá-las a aplicação como está e, em seguida, termine as coisas agradáveis. E não perdido.

Meu aplicativo foi rejeitado em dois pontos: 1.1.6 Os aplicativos que habilitam chamadas telefônicas anônimas ou de brincadeira ou mensagens SMS / MMS serão rejeitados (os aplicativos que permitem fazer chamadas anônimas ou de brincadeira, SMS, MMS serão rejeitados) e 5.2.5 Seu aplicativo contém recursos que imitam a interface ou o comportamento da chamada do iOS (o aplicativo imita o mecanismo de chamada padrão). Portanto, os aplicativos existentes provavelmente não usavam o CallKit, não porque não adivinhavam, mas porque era impossível.
Infelizmente, o diálogo com o serviço de publicação não levou a nada. As chamadas falsas não podem ser combinadas com o CallKit e o VoIP push de qualquer forma. Os argumentos de que isso foi feito não por diversão, mas por uma causa útil, não ajudaram.
Eu já planejei como promover meu aplicativo no ProductHunt e em outros sites, começar a me comunicar com os usuários e me tornar uma startup real. Mas, para isso, é necessário ajustar a funcionalidade ao nível dos aplicativos que já existem. Ainda não gosto dessa ideia e só estou pensando em deixar meu código no gitHub e esquecer o aplicativo, pois ele já trouxe experiência.
Da próxima vez que publicar meus aplicativos, definitivamente :
- Analisarei pelo menos uma pesquisa nos guias de publicação na AppStore
- Vou publicar o aplicativo o mais cedo possível
- Pensarei por que essa funcionalidade não está disponível nos produtos existentes no mercado e analisarei os guias com mais cuidado.
- Não vou brincar com a Apple.