
Mungkin, banyak orang berpikir tentang bagaimana mewujudkan pengetahuan mereka dalam produk jadi. Seseorang lebih, seseorang lebih sedikit menghabiskan waktu untuk itu. Saya ingin berbagi dengan komunitas pengalaman dan visi saya tentang bagaimana melakukan ini dengan benar, tetapi itu tidak selalu berhasil.
Cari ide
Pada tahap ini, kita perlu memutuskan apa yang akan kita buat.
Untuk melakukan ini, hasilkan gagasan, tuliskan (misalnya, di trello), lakukan tinjauan pesaing - google dan cari di toko aplikasi.

Kemudian kami mencoba menilai kemampuan kami baik dari segi waktu, kemungkinan investasi keuangan, dan sesuai dengan pengetahuan yang diperlukan. Yaitu membuat Eventbrite atau pembunuh Uber bukan ide yang bagus.
Penelitian
Mereka dibagi menjadi kualitatif dan kuantitatif seperti riset pasar, tes A / B, analitik, survei. Untuk menguji ide Anda di tingkat proyek rumah, jajak pendapat yang paling terjangkau.
Saya memilih ide pengingat kasur kudeta, karena Saya tidur sendiri, dan anak itu tumbuh dari boks bayi dan juga pindah ke tempat tidurnya.
Dalam survei, hal utama adalah mengajukan pertanyaan dengan benar, seharusnya tidak mengandung petunjuk atau bias. Lebih disukai akurat dan ringkas.
Tidak benar: Seberapa sering Anda membalik kasur?
Benar: Apakah Anda membalik kasur?
Jangan pernah bertanya kepada responden apakah dia akan menggunakan sesuatu: "Apakah Anda akan menggunakan aplikasi yang mengingatkan pada pembalikan kasur?"
Dalam kebanyakan kasus, Anda akan menerima jawaban positif palsu.
Diwawancarai 10 orang di tempat kerja, 4 orang mengatakan bahwa mereka membalik kasur dan tidak ingat persis kapan harus dilakukan waktu berikutnya dan ke arah mana untuk mengubahnya. Bukan hasil terbaik, tetapi 40% sudah menjadi sesuatu. Saya memutuskan untuk melakukannya.
Penelitian kualitatif terdiri dari
Pengujian UX
Cara termudah dan paling terjangkau adalah dengan membuat sketsa semua layar di atas kertas dan membuat prototipe di aplikasi mengagumkan atau, jika Anda memiliki pengalaman, dalam figma - alat ini memungkinkan Anda untuk membuat prototipe kerja aplikasi tanpa pemrograman, dengan menyorot area aktif layar (tombol) dan deskripsi dari layar yang seharusnya terbuka.
Pengembangan pelanggan
Metode ini bertujuan untuk mengidentifikasi masalah atau kebutuhan klien sebelum pengembangan dimulai. Ini terdiri dalam menyusun kuesioner yang benar dan melakukan wawancara.
Metode ini membantu merumuskan relevansi aplikasi.
Untuk membuat prototipe antarmuka, saya membatasi diri untuk membuat sketsa layar pada stiker dan menganimasikannya dengan kagum. Setelah itu ia meminta rekannya di tempat kerja untuk berlari di sekitar layar dan membagikan kesan-kesannya.
Deskripsi gagasan

Berdasarkan studi di atas, kami mencoba menjawab pertanyaan:
Apa manfaat yang dibawa aplikasi?
Membantu orang yang peduli dengan kesehatan mereka menggunakan kasur yang bekerja lebih lama.
Masalah apa yang dipecahkan?
Ingatkan Anda tentang kudeta.
Mengingatkan dengan tidak mencolok.
Pahami mengapa Anda perlu berbalik.
Pahami persis bagaimana membalik, jangan merusak apa pun dan jangan sobek pada saat bersamaan.
Pahami cara memilih kasur.
Cari tahu kapan kasur perlu diganti (5-10 tahun).
Cara membersihkan kasur dalam keadaan darurat (tumpah, ternoda, dll.).
Dalam situasi apa ini digunakan?
Di toko, penjual menunjukkan cara membalikkan.
Anda ingin membaliknya di rumah.
Di tempat kerja, Anda perlu membalik secara teratur.
Darurat telah terjadi.
Tentukan minimum fungsionalitas yang memungkinkan peluncuran
MVP
Daftar kasur, pengingat kudeta, otorisasi untuk mentransfer sejarah (kasur hidup lebih lama dari telepon), instruksi singkat.
Implementasi
Di sini saya ingin menceritakan secara singkat tentang teknologi yang digunakan.
Realm dipilih sebagai basis data karena kenalan lama saya dengannya, serta fitur-fitur praktis seperti itu di luar kotak seperti adanya metode tulis / baca yang tidak sinkron dan kinerja yang baik.
akuisisi data Realm asinkronpublic 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; }
Juga, kemudahan menampilkan data dalam recyclerView ketika mereka berubah: cukup sambungkan RealmChangeListener:
hubungkan RealmChangeListener private RealmChangeListener<RealmResults<RealmModelMattress>> realmChangeListener = data->{ refreshData(data); };
Untuk menghapus elemen, recyclerView menggunakan ItemTouchHelper, di sini ditulis dengan detail yang cukup tentang penggunaannya.
Cukup membuat kelas yang memperluas ItemTouchHelper.SimpleCallback dan menjelaskan tindakan yang harus terjadi saat menggesek (onSwiped) atau bergerak (onMove).
Dan hubungkan ke pendaur ulang:
sambungkan SwipeToDeleteCallback ke recyclerview 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);
Pemberitahuan lokal tentang perlunya membalik kasur diterapkan melalui manajer pemberitahuan, karena saat ini kasur merupakan salah satu metode yang paling benar dan disetujui Google untuk membuat peringatan.
mengirim pemberitahuan 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()); }
Otorisasi dalam aplikasi dilakukan dengan 2 cara:
Anda dapat menentukan email Anda dan memasukkan kata sandi - akun yang sesuai akan dibuat di server dan data dari aplikasi tentang kasur dan waktu revolusi akan terikat padanya. Itu memberikan peluang untuk mendapatkannya dengan masuk ke aplikasi, setelah mengganti telepon.
Metode otorisasi kedua: facebook, menggunakan API-nya.
Untuk menerapkan metode ini, hal pertama yang harus dilakukan adalah mendaftarkan aplikasi Anda di Facebook , menerapkan verifikasi token akses di server https://graph.facebook.com/me?fields=id&access_token=accToken , di mana id adalah pengidentifikasi pengguna Facebook dan accToken token akses sementara yang mengonfirmasi bahwa ini memang orang yang sama mengirim permintaan otorisasi.
Publikasikan Hasil
Buat akun pengembang.
Kami membayar biaya pendaftaran sebesar $ 25 satu kali.
Kami mempublikasikan aplikasi Balik kasur .
Kami menentukan peringkat konten, biaya dan distribusi (negara-negara tempat aplikasi akan tersedia). Karena aplikasi dilokalkan untuk dua bahasa, kami membuat 2 deskripsi dalam bahasa Rusia dan Inggris, serta tangkapan layar.
Saya berharap ini akan bermanfaat bagi seseorang untuk tidak tersesat dan mencapai tujuan.