
ربما ، فكر الكثير من الناس في كيفية إدراك معارفهم في المنتج النهائي. شخص أكثر من ذلك ، شخص أقل من الوقت الذي يقضيه في ذلك. أريد أن أشارك مع المجتمع تجربتي ورؤيتي حول كيفية القيام بذلك بشكل صحيح ، لكن ذلك لا ينجح دائمًا.
ابحث عن فكرة
في هذه المرحلة ، نحتاج أن نقرر ما الذي سننشئه.
للقيام بذلك ، قم بإنشاء الأفكار ، وقم بتدوينها (على سبيل المثال ، في trello) ، وقم بمراجعة المنافسين - google وابحث عن متجر التطبيقات.

ثم نحاول تقييم قدراتنا بوعي من حيث الوقت ، والاستثمارات المالية المحتملة ، ووفقًا للمعرفة اللازمة. أي صنع Eventbrite أو Uber killer لن يكون فكرة جيدة.
بحث
وهي مقسمة إلى النوعية والكمية مثل أبحاث السوق ، اختبارات A / B ، التحليلات ، المسوحات. لاختبار فكرتك على مستوى مشروع المنزل ، فإن استطلاعات الرأي هي الأكثر تكلفة.
اخترت فكرة التذكير بفراش الانقلاب ، لأنه أنام عليها بنفسي ، ونشأ الطفل من السرير وانتقل أيضًا إلى سريره.
في الاستطلاع ، الشيء الرئيسي هو طرح السؤال بشكل صحيح ؛ يجب ألا يحتوي على تلميح أو يكون متحيزًا. ويفضل دقيقة وموجزة.
غير صحيح: كم عدد المرات التي تقلب فيها فراش؟
صحيح: هل تقلب المراتب؟
لا تسأل المستفتى مطلقًا عما إذا كان سيستخدم أي شيء: "هل ستستخدم التطبيق الذي يذكرنا بقلب المراتب؟"
في معظم الحالات ، سوف تتلقى إجابة إيجابية خاطئة.
أجريت مقابلات مع 10 أشخاص في العمل ، وقال 4 أشخاص إنهم انقلبوا المرتبة ولم يتذكروا بالضبط متى يجب أن يتم ذلك في المرة القادمة وفي أي اتجاه ينقلبون. ليست أفضل نتيجة ، ولكن 40 ٪ بالفعل شيء. قررت أن أفعل.
البحث النوعي يتكون من
اختبار UX
الطريقة الأسهل والأقل تكلفة هي رسم جميع الشاشات على الورق وإعداد النماذج الأولية لها في تطبيق الأعجوبة أو في figma - إذا كانت لديك خبرة - تسمح لك هذه الأدوات بإنشاء نموذج أولي للتطبيق دون برمجة ، عن طريق إبراز المناطق النشطة من الشاشة (الأزرار) ووصف الشاشة التي يجب أن تفتح.
تنمية العملاء
تهدف هذه الطريقة إلى تحديد مشكلة أو احتياجات العميل قبل بدء التطوير. وهو يتكون من تجميع الاستبيانات الصحيحة وإجراء المقابلات.
تساعد هذه الطريقة في صياغة أهمية التطبيق.
لإعداد النموذج الأولي للواجهة ، قصرت نفسي على رسم الشاشات على الملصقات وتحريكها بشكل رائع. بعد ذلك طلب من زميله في العمل الركض حول الشاشات وتبادل انطباعاته.
وصف الفكرة

بناءً على الدراسات المذكورة أعلاه ، نحاول الإجابة على الأسئلة:
ما هي الفوائد التي يجلبها التطبيق؟
يساعد الأشخاص الذين يهتمون بصحتهم على استخدام مرتبة عمل أطول.
ما هي المشاكل التي يحلها؟
أذكركم بانقلاب.
تذكير بشكل مخفي.
افهم لماذا تحتاج إلى الدوران.
فهم بالضبط كيفية قلبك ، لا تحطم أي شيء ولا تمزق في نفس الوقت.
فهم كيفية اختيار فراش.
اكتشف متى يجب تغيير المرتبة (5-10 سنوات).
كيفية تنظيف المرتبة في حالة الطوارئ (انسكاب ، ملطخة ، إلخ).
في أي الحالات يتم استخدامه؟
في المتجر ، يوضح البائع كيفية الدوران.
تريد قلبه في المنزل.
في العمل ، تحتاج إلى الوجه بانتظام.
لقد حدثت حالة طوارئ.
حدد الحد الأدنى من الوظائف التي ستجعل الإطلاق ممكنًا
MVP
قائمة المراتب ، تذكرة انقلاب ، ترخيص لنقل التاريخ (عمر المرات أطول من الهاتف) ، تعليمات موجزة.
تطبيق
هنا أريد أن أقول باختصار عن التقنيات المستخدمة.
تم اختيار مجال كقاعدة بيانات بسبب معرفتي الطويلة به ، بالإضافة إلى ميزات ملائمة من خارج الصندوق مثل وجود طرق للكتابة / القراءة غير المتزامنة وأداء جيد.
الحصول غير المتزامن على بيانات المجالpublic 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; }
أيضًا ، سهولة عرض البيانات في recyclerView عند تغييرها: فقط قم بتوصيل RealmChangeListener:
ربط RealmChangeListener private RealmChangeListener<RealmResults<RealmModelMattress>> realmChangeListener = data->{ refreshData(data); };
لحذف العناصر ، استخدم recyclerView ItemTouchHelper ، هنا مكتوب بتفاصيل كافية حول استخدامه.
يكفي إنشاء فصل دراسي يمتد ItemTouchHelper.SimpleCallback ويصف الإجراءات التي يجب أن تحدث عند التمرير (onSwiped) أو النقل (onMove).
وتوصيله إلى إعادة التدوير:
قم بتوصيل SwipeToDeleteCallback لإعادة التدوير 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);
يتم تنفيذ الإشعارات المحلية حول الحاجة إلى قلب المرات من خلال إدارة الإخطار ، حيث إنها في الوقت الحالي واحدة من أكثر الطرق الصحيحة والموافق عليها من Google لإنشاء التنبيهات.
إرسال إشعار 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()); }
يتم التفويض في التطبيق بطريقتين:
يمكنك تحديد بريدك وإدخال كلمة مرور - سيتم إنشاء الحساب المقابل على الخادم وسيتم إرفاق البيانات من التطبيق عن المراتب ووقت الانقلاب. يوفر ذلك الفرصة للحصول عليها عن طريق تسجيل الدخول إلى التطبيق ، بعد تغيير الهاتف.
الطريقة الثانية للترخيص: facebook ، باستخدام API الخاص به.
لتنفيذ هذه الطريقة ، فإن أول ما عليك فعله هو تسجيل تطبيقك على Facebook ، وتطبيق التحقق من رمز الوصول على الخادم https://graph.facebook.com/me؟fields=id&access_token=accToken ، حيث يكون id هو معرف مستخدم Facebook و accToken رمز وصول مؤقت يؤكد أن هذا هو بالفعل الشخص نفسه الذي أرسل طلب تفويض.
نشر النتيجة
إنشاء حساب المطور.
نحن ندفع رسوم تسجيل 25 دولار لمرة واحدة.
ننشر التطبيق اقلب المرتبة .
نحدد تقييم المحتوى والتكلفة والتوزيع (تلك البلدان التي سيتوفر فيها التطبيق). نظرًا لأن التطبيق مترجم للغتين ، فنحن نقدم وصفين باللغتين الروسية والإنجليزية ، وكذلك لقطات الشاشة.
آمل أن يكون ذلك مفيدًا لشخص ما حتى لا يضل ويحقق الهدف.