Une fois, j'ai pensé que pour exécuter mon application, il suffisait d'écrire du code. Un peu plus tard, j'ai découvert qu'il était agréable de compléter le code avec le design. Plus tard, j'ai réalisé qu'il fallait chercher un public et y promouvoir mon produit. Mais tout cela peut être superflu si vous ne suivez pas les directives. Ci-dessous, je parlerai de ma première expérience d'auto-développement et pourquoi mon application ne verra pas d'utilisateurs.

Pour commencer, je réserve que je développe des applications depuis environ cinq ans et ce n'est pas ma première application en général, mais la première complètement indépendante, dans laquelle je suis passée d'une idée à une implémentation. Il s'est avéré que la dernière année, je n'ai pas du tout écrit le code, mais j'étais chef de produit. Il me semblait que je n'écrirais plus jamais de code, que c'était trop ennuyeux. Mais cela n'a jamais commencé à se briser en six mois, quand il est devenu intéressant pour moi de comprendre la science des données et le python. Et finalement, ça s'est cassé en un an, quand j'ai vraiment voulu faire quelque chose avec mes mains et que ma candidature a commencé à apparaître.
L'application dans la première version s'appelait TinderCall. Il permet d'échapper à des rendez-vous ou des rencontres ennuyeux. Plusieurs fois, je me suis retrouvé dans une situation tellement délicate qu'il m'a été plus facile d'écrire à mon ami: «Composez-moi vite» et attendez. J'ai décidé que cela pourrait être légèrement automatisé et je m'appelle. Cela semblait également être un excellent moyen de travailler avec CallKit et PushKit. L'idée même de l'application m'est venue de la lecture d'un blog sur un instagram, dans lequel l'auteur parle de la façon dont elle va aux rendez-vous (un instagram est également utile). Là-bas, de nombreuses filles ont été confrontées à une situation similaire. Un peu plus tard, l'application est devenue connue sous le nom de «KateCall» ou «Katya, call». Le nom est apparu dans une conversation avec un ami qui était également très inspiré par l'idée et a dit qu'elle demandait généralement à Katya de faire ceci: "Katya, appelle-moi." Cela me semble un beau jeu de mots.
Ensuite, j'ai commencé à regarder, et ce qui est déjà sur ce sujet. Trouvé plusieurs applications similaires. Pas étonnant, l'idée se trouve à la surface. Pour chacun d'eux, il était clair qu'il s'agissait de la première candidature de quelqu'un. Sans design, et avec la nécessité de garder l'application ouverte pour que l'appel arrive. J'ai décidé qu'une chose de plus à faire. Seulement, ce sera plus beau et plus fonctionnel. Quoi qu'il en soit, je voulais étirer le muscle de la programmation avec quelque chose.
La fonctionnalité a été définie aussi simple que possible: la possibilité de sélectionner le nom de l'appelant et l'heure après laquelle l'appel se produira. Au début, j'ai décidé de faire le design moi-même, car c'est simple: la couleur préférée des gens est le bleu, la grille des éléments est 8, et j'ai également enseigné xCode pour les designers. Mais quand je l'ai fait, j'ai réalisé que je ferais mieux de me tourner vers mes collègues designers.

J'ai beaucoup aimé la version design et j'ai commencé l'implémentation. Au total, le développement a pris 35 jours entre la création du projet et le clic sur le bouton Soumettre. 17 commits et environ 40 heures, y compris l'écriture de code, la lecture et la lutte contre les bugs. Le plus grand nombre de commits a été fait par moi le jeudi.
Pour ceux qui sont intéressés à apprendre les détails et les limites de travailler avec CallKit et VoIP push, bienvenue iciLe code du projet est disponible ici .
Avec CallKit, vous pouvez effectuer des appels aussi crédibles que possible.
- utilise l'écran d'appel standard
- la mélodie et les contacts correspondent à de vrais
- l'appel est affiché dans le carnet d'appels.
Il existe plusieurs nuances. Premièrement, vous ne pouvez transférer aucune image vers l'écran d'appel standard. Deuxièmement, l'écran d'appel se comporte différemment selon que l'application est ouverte ou non. Donc, si l'appel est dans l'application, après la réponse, vous devez afficher l'écran de conversation vous-même. Et si vous répondez sur un écran verrouillé, un écran de conversation standard apparaîtra. Troisièmement, CallKit ne peut pas être utilisé en Chine.
Le deuxième point technique est lié à la poussée. La minuterie ne me convenait pas, car pour cela, vous devez garder l'application ouverte en permanence. Je pensais à une poussée locale, mais ils ne garantissent pas que l'application sera réveillée. Il s'est avéré qu'il existe un type distinct de poussée pour la VoIP. Ils ont une liste de grandes fonctionnalités:
- l'application démarre automatiquement au moment de la réception du push, même si elle était fermée.
- Il n'est pas nécessaire d'obtenir l'autorisation de l'utilisateur pour utiliser ce type de push.
- après avoir reçu le push est immédiatement traité par l'application.
Mais vous ne pouvez les utiliser que s'il existe une fonctionnalité d'appel. Je ne voulais pas écrire un middleware séparé pour recevoir cette poussée, comme il s'est avéré, et je n'en avais pas besoin. La bibliothèque OneSignal vous permet d'envoyer tout type de push à distance depuis l'application dans les délais. Honnêtement, je ne peux pas imaginer une situation où la poussée VoIP peut encore être nécessaire sur un calendrier, mais il est possible de les envoyer. Pour OneSignal, vous devez utiliser un certificat voip-push distinct. Vous pouvez l'obtenir au même endroit que d'habitude.
Une fois la fonctionnalité principale terminée, j'ai décidé que cela ne suffisait pas. Je voulais créer un écran plus compréhensible avec le temps d'attente des appels, puis plus d'informations sur moi et les commentaires, ajouter des taptes, ajouter une sélection de voix, ajouter ... J'ai pu m'arrêter après la première révision et j'ai décidé que connaissant l'AppStore et leur nombre de restrictions, cela valait la peine de les envoyer l'application telle quelle, puis terminer les choses agréables. Et pas perdu.

Ma demande a été rejetée sur deux points: 1.1.6 Les applications qui permettent des appels téléphoniques anonymes ou farfelus ou la messagerie SMS / MMS seront rejetées (Les applications qui vous permettent de faire des appels anonymes ou farces, SMS, MMS seront rejetées), et 5.2.5 Votre application contient des fonctionnalités qui imitent l'interface ou le comportement d'appel iOS (l'application imite le mécanisme d'appel standard). Les applications existantes n'ont donc probablement pas utilisé CallKit, non pas parce qu'elles ne l'ont pas deviné, mais parce que c'était impossible.
Malheureusement, le dialogue avec le service d'édition n'a abouti à rien. Les faux appels ne peuvent être combinés avec CallKit et VoIP push sous aucune forme. Les arguments selon lesquels cela n'a pas été fait pour le plaisir, mais pour une cause utile, n'ont pas aidé.
J'ai déjà prévu comment je vais promouvoir mon application sur ProductHunt et d'autres sites, commencer à communiquer avec les utilisateurs et devenir une véritable startup. Mais pour cela, vous devez ajuster la fonctionnalité au niveau des applications qui existent déjà. Je n'aime pas encore vraiment cette idée, et je pense juste à laisser mon code sur gitHub et oublier l'application, elle a déjà apporté de l'expérience.
La prochaine fois, lorsque je publierai mes candidatures, je vais certainement :
- Je vais parcourir au moins une recherche sur les guides de publication dans l'AppStore
- Je publierai l'application le plus tôt possible
- Je vais réfléchir à la raison pour laquelle une telle fonctionnalité n'est pas disponible dans les produits existants sur le marché, et je vais parcourir les guides encore plus attentivement.
- Je ne plaisanterai pas avec Apple.