
Provavelmente, muitas pessoas pensaram em como realizar seus conhecimentos no produto acabado. Alguém mais, alguém menos tempo gasto nisso. Quero compartilhar com a comunidade minha experiência e visão de como fazer isso corretamente, mas nem sempre funciona.
Procure uma ideia
Nesta fase, precisamos decidir o que criaremos.
Para fazer isso, gere idéias, anote-as (por exemplo, no trello), faça uma revisão dos concorrentes - pesquise no google e pesquise na loja de aplicativos.

Em seguida, tentamos avaliar sobriamente nossas capacidades, tanto em termos de tempo quanto de possíveis investimentos financeiros e de acordo com o conhecimento necessário. I.e. fazer um assassino da Eventbrite ou Uber não seria uma boa ideia.
Pesquisa
Eles são divididos em qualitativos e quantitativos, como pesquisa de mercado, testes A / B, análises e pesquisas. Para testar sua ideia no nível de um projeto doméstico, as mais acessíveis são as pesquisas.
Eu escolhi a idéia de um lembrete de um colchão de golpe, porque Eu mesmo durmo, e a criança cresceu fora do berço e também se mudou para sua cama.
Na pesquisa, o principal é colocar corretamente a questão; ela não deve conter uma dica ou ser tendenciosa. De preferência preciso e conciso.
Não é verdade: com que frequência você vira um colchão?
Verdadeiro: você está virando o colchão?
Nunca pergunte ao entrevistado se ele usará alguma coisa: "Você usará o aplicativo que lembra uma queda do colchão?"
Na maioria dos casos, você receberá uma resposta positiva falsa.
Entrevistaram 10 pessoas no trabalho, 4 pessoas disseram que viraram o colchão e não se lembravam exatamente quando deveria ser feito na próxima vez e em que direção o virar. Não é o melhor resultado, mas 40% já é algo. Eu decido fazer.
A pesquisa qualitativa consiste em
Teste de UX
A maneira mais fácil e acessível é esboçar todas as telas no papel e prototipá-las no aplicativo maravilha ou, se você tiver experiência, na figma - essas ferramentas permitem criar um protótipo funcional do aplicativo sem programação, destacando as áreas ativas da tela (botões) e descrevendo tela que deve abrir.
Desenvolvimento do cliente
Este método visa identificar o problema ou as necessidades do cliente antes do início do desenvolvimento. Consiste na compilação dos questionários corretos e na realização de entrevistas.
Este método ajuda a formular a relevância do aplicativo.
Para criar um protótipo da interface, limitei-me a desenhar telas em adesivos e animar as maravilhas. Depois disso, ele pediu ao colega no trabalho para percorrer as telas e compartilhar suas impressões.
Descrição da ideia

Com base nos estudos acima, estamos tentando responder às perguntas:
Quais benefícios o aplicativo traz?
Ajuda as pessoas que se preocupam com sua saúde a usar um colchão de trabalho por mais tempo.
Que problemas ele resolve?
Lembrá-lo de um golpe.
Lembrando discretamente.
Entenda por que você precisa se virar.
Entenda exatamente como virar, não quebre nada e não rasgue ao mesmo tempo.
Entenda como escolher um colchão.
Descubra quando o colchão precisa ser trocado (5 a 10 anos).
Como limpar o colchão em caso de emergência (derramado, manchado, etc.).
Em que situações é usada?
Na loja, o vendedor mostra como entregar.
Você quer entregá-lo em casa.
No trabalho, você precisa virar regularmente.
Ocorreu uma emergência.
Decida sobre um mínimo de funcionalidade que tornará possível o lançamento
MVP
A lista de colchões, um lembrete de golpe, autorização para transferir a história (o colchão dura mais que o telefone), uma breve instrução.
Implementação
Aqui, quero falar brevemente sobre as tecnologias usadas.
O domínio foi escolhido como o banco de dados por causa de meu conhecimento de longa data com ele, além de recursos convenientes prontos para uso, como a presença de métodos de gravação / leitura assíncronos e bom desempenho.
aquisição assíncrona de dados do territóriopublic RealmResults<RealmModelMattress> getAllMattressAsync(){ realm = getRealm(); return realm.where(RealmModelMattress.class) .equalTo("deleted", false) .sort("id", Sort.ASCENDING) .findAllAsync(); } private Realm getRealm() { if (mConfig==null) { mConfig = new RealmConfiguration.Builder() .build(); } realm = mRealm.get(); if (realm == null) { try { realm = Realm.getInstance(mConfig); mRealm.set(realm); } catch (Exception e) { closeConnection(); Realm.deleteRealm(mConfig); realm = Realm.getInstance(mConfig); mRealm.set(realm); } } return realm; }
Além disso, a facilidade de exibir dados no recyclerView quando eles mudam: basta conectar o RealmChangeListener:
conectar RealmChangeListener private RealmChangeListener<RealmResults<RealmModelMattress>> realmChangeListener = data->{ refreshData(data); };
Para excluir elementos, o recyclerView usou o ItemTouchHelper, aqui está escrito em detalhes suficientes sobre seu uso.
Basta criar uma classe que estenda ItemTouchHelper.SimpleCallback e descrever as ações que devem ocorrer ao deslizar (onSwiped) ou mover (onMove).
E conecte-o ao reciclador:
conecte SwipeToDeleteCallback à reciclagem rv = view.findViewById(R.id.recyclerViewMattress); rv.setLayoutManager(new LinearLayoutManager(context)); adapter = new MattressListAdapter(data, clickListener, getContext()); rv.setAdapter(adapter); ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new SwipeToDeleteCallback(adapter)); itemTouchHelper.attachToRecyclerView(rv);
As notificações locais sobre a necessidade de virar o colchão são implementadas por meio do notificationManager, uma vez que atualmente é um dos métodos mais corretos e aprovados pelo Google para criar alertas.
enviando notificação private void sendNotification(String title, String text, int id) { String DBEventIDTag= "Mattress" + id; int DBEventID = id; Intent intent = new Intent(getApplicationContext(), MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); intent.putExtra(DBEventIDTag, DBEventID); PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0); NotificationManager notificationManager = (NotificationManager)getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE); if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { NotificationChannel channel = new NotificationChannel("default", "Default", NotificationManager.IMPORTANCE_DEFAULT); Objects.requireNonNull(notificationManager).createNotificationChannel(channel); } NotificationCompat.Builder notification = new NotificationCompat.Builder(getApplicationContext(), "default") .setContentTitle(title) .setContentText(text) .setContentIntent(pendingIntent) .setSmallIcon(R.mipmap.ic_launcher) .setAutoCancel(true); Objects.requireNonNull(notificationManager).notify(id, notification.build()); }
A autorização no aplicativo é feita de duas maneiras:
Você pode especificar seu e-mail e digitar uma senha - a conta correspondente será criada no servidor e os dados do aplicativo sobre colchões e o tempo da revolução serão vinculados a ele. Isso oferece a oportunidade de obtê-los fazendo login no aplicativo, depois de trocar o telefone.
O segundo método de autorização: facebook, usando sua API.
Para implementar esse método, a primeira coisa a fazer é registrar seu aplicativo no Facebook , implementar a verificação de token de acesso no servidor https://graph.facebook.com/me?fields=id&access_token=accToken , em que id é o identificador de usuário do Facebook e accToken token de acesso temporário confirmando que essa é realmente a mesma pessoa enviou uma solicitação de autorização.
Publicar resultado
Crie uma conta de desenvolvedor.
Pagamos uma taxa de registro de US $ 25 de uma só vez.
Nós publicamos o aplicativo Vire o colchão .
Determinamos a classificação, o custo e a distribuição do conteúdo (os países em que o aplicativo estará disponível). Como o aplicativo está localizado em dois idiomas, fazemos duas descrições em russo e inglês, além de capturas de tela.
Espero que seja útil para alguém não se perder e alcançar o objetivo.