
من خلال مجموعة متنوعة من الأدوات والميزات الجديدة التي تم الإعلان عنها في
Android Dev Summit ، ينبغي إيلاء اهتمام خاص لواجهة برمجة التطبيقات (API) تحديثات داخل التطبيقات (IAUs) التي تتيح للمطورين زيادة سرعة تقديم الميزات وإصلاح الأخطاء وتحسين الأداء للمستخدمين النشطين. نظرًا لأن هذه الميزة قد تم
إصدارها أخيرًا بعد Google I / O 2019 ، فسأغوص في هذه المقالة بعمق في واجهة برمجة تطبيقات IAU ، وأشرح بالتفصيل تدفقات المستخدم الموصى بها وأقدم بعض نماذج الأكواد. علاوة على ذلك ، سوف أشارك بعض الخبرة في تكامل
IAU في تطبيق
Pandao ، وهو منصة سوق للبضائع الصينية.
تسمح واجهة برمجة التطبيقات الجديدة للمطورين ببدء تدفق جديد لطلب التحديث داخل التطبيق من أجل دفع المستخدمين النشطين إلى تحديث التطبيق. تكمل IAUs آلية التحديث التلقائي لـ Google Play الحالية ، لكن لسوء الحظ ، ليس لها أي تأثير على نوايا بعض المستخدمين لتعطيل أي نوع من التحديثات. يمكن تنفيذ طلب IAU بطريقتين ، مما يوفر تجربة مستخدم مختلفة تمامًا.
- يطالب التدفق المرن المستخدمين بتنزيل تحديث في الخلفية وتثبيته في لحظة مريحة. من المفترض أن يتم استخدامه في الحالات بينما لا يزال من المناسب للمستخدم استخدام الإصدار الأقدم من التطبيق أثناء إصداره الجديد.

- يتطلب التدفق الفوري من المستخدمين تنزيل تحديث وتثبيته قبل متابعة استخدام التطبيق. من المفترض أن يتم استخدامه في الحالات بينما يكون من الضروري للمطورين منع استخدام التطبيق قبل تطبيق التحديث.

نظرًا لأن حالة الاستخدام الأخيرة أقل أهمية ومناسبة لتطبيق Pandao ، سنناقش الحالة الأولى بالتفصيل.
IAUs التكامل تدفق مرنة
استخدام القضية
يتكون تدفق IAU المرن من الخطوات التالية.
- يطلب التطبيق من Google Play البحث عن التحديثات المتاحة باستخدام مكتبة Play Core.
- إذا كان هناك تحديث متاح ، يطلب التطبيق من Google Play إظهار مربع حوار IAUs. يعرض Google Play مربع حوار طلب التحديث للمستخدم.
- إذا قبل المستخدم طلب التحديث ، فسيقوم Google Play بتنزيل تحديث في الخلفية ، مما يوفر للمستخدم مراقبة حالة رشيقة في شريط الحالة.
- في حالة اكتمال عملية التنزيل أثناء وجود التطبيق في الخلفية ، يكمل Google Play التثبيت تلقائيًا. في حالات اكتمال التنزيل أثناء وجود التطبيق في المقدمة ، يتعين علينا تحديد المنطق المخصص لإكمال التحديث. النظر في العديد من أفضل الممارسات للتنفيذ.
- يقوم التطبيق بتشغيل عملية التثبيت أثناء عرض شاشة Google Play مع تقدم التثبيت للمستخدم. بعد اكتمال التثبيت ، يتم إعادة تشغيل التطبيق ويتم فتح إصدار محدث. في هذه الحالة ، يوصى بعرض مربع حوار إضافي للسماح للمستخدم بالتأكيد صراحة على استعداده لإعادة تشغيل التطبيق الآن. هذا هو تدفق ينصح بشدة .
- ينتظر التطبيق حتى يذهب إلى الخلفية ثم يكمل التحديث بصمت. من ناحية ، يعد هذا الخيار أقل توغلاً من حيث تجربة المستخدم. ولكن من ناحية أخرى ، فإنه يتطلب من المطور تطبيق ميزة صعبة للكشف عن كلما انتقل التطبيق إلى الخلفية.
في الحالات الاستثنائية ، سيتم تأجيل إكمال التحديث تلقائيًا إلى مهمة Google Play الأساسية. لا ينصح بهذا الخيار للاستخدام الصريح لأنه لا يوفر أي ضمانات حول تثبيت أحد التحديثات.
المتطلبات الأساسية للاختبار اليدوي
من أجل تنفيذ تدفق التحديث الكامل يدويًا على جهاز الاختبار ، يجب أن يكون لديك إصداران على الأقل من التطبيق مع رقم إصدار مختلف: إصدار مصدر وإصدار مستهدف.
- يجب نشر إصدار المصدر الذي يحتوي على رقم الإصدار الأعلى على Google Play ، وهذا هو الإصدار الذي سيتم تحديده بواسطة Google Play كتحديث متوفر. يجب تثبيت الإصدار الهدف مع رقم الإصدار الأدنى وميزة IAU المدمجة على جهازك ، هذا هو الإصدار الذي سيتم تحديثه. الشيء هو أنه عندما يطلب التطبيق من Google Play البحث عن التحديثات المتاحة ، فإنه يقارن رقم إصدار التطبيق المثبت مع رقم إصدار آخر إصدار متوفر في Google Play. لذلك لن يتم تشغيل ميزة IAU فقط في حالة ما إذا كان رقم الإصدار في Google Play أعلى من الإصدار الفعلي للتطبيق على الجهاز.
- يجب أن يكون لكل من المصدر والنسخة المستهدفة نفس اسم الحزمة ويجب توقيعهما بنفس شهادة الإصدار .
- Android 5.0 (مستوى API 21) أو أعلى.
- لعب مكتبة الأساسية 1.5.0 أو أعلى.
رمز العينة
يحتوي هذا القسم على بعض نماذج التعليمات البرمجية لاستخدام IAUs ، والتي يمكن العثور عليها أيضًا في
الوثائق الرسمية . بادئ ذي بدء ، من الضروري إضافة مكتبة Play Core إلى ملف gradle مستوى الوحدة النمطية.
dependencies { ... implementation "com.google.android.play:core:1.5.0" }
بعد ذلك ، لنقم بإنشاء مثيل لمدير
AppUpdateInfo
وإضافة عمليات رد الاتصال إلى مهمة
AppUpdateInfo
. تحتوي نتيجة هذه المهمة على معلومات حول توفر التحديث ، والقصد من بدء التحديث إذا كان ذلك متاحًا ، والتقدم الحالي لتنزيل التحديث إذا كان قد بدأ بالفعل.
فيما يتعلق بكيفية تشغيل مربع حوار طلب التحديث من Google Play في التعليمات البرمجية ، فإنك تتلقى
PendingIntent
في كائن
AppUpdateInfo
، والذي يمكنك البدء به
startIntentSenderForResult
. يطلب هذا الحوار من المستخدم بدء التحديث.
appUpdateManager.startUpdateFlowForResult(
لمراقبة حالة التحديث ، يمكنك إضافة
InstallStateUpdatedListener
إلى مدير IAUs. يرجى التأكد من أن
InstallStateUpdatedListener
يدرك دورة الحياة.
بمجرد تنزيل التحديث (حالة
DOWNLOADED
) ، يجب إعادة تشغيل التطبيق لإكمال التحديث. يمكن بدء
appUpdateManager.completeUpdate()
بسهولة عن طريق الاتصال بـ
appUpdateManager.completeUpdate()
، لكن يوصى بعرض شريط للوجبات الخفيفة للسماح للمستخدم بالتأكيد صراحة على استعداده لإعادة تشغيل التطبيق الآن.
Snackbar.make( rootView, "An update has just been downloaded from Google Play", Snackbar.LENGTH_INDEFINITE ).apply { setAction("RELOAD") { appUpdateManager.completeUpdate() } show() }
خطأ "التحديث غير متوفر"
بادئ ذي بدء ، يرجى التحقق من متطلبات التحقق المذكورة في قسم "متطلبات التنفيذ الأساسية". إذا أكملت بنجاح الخطوات المذكورة أعلاه وفقًا لجميع المتطلبات ، على الرغم من أن التحديث ، وفقًا
onSuccess
، لا يزال غير متاح ، يرجى الانتباه إلى الخدعة التالية. السبب المحتمل هو أن تطبيق Google Play لا يعرف التحديث حتى الآن بسبب آلية التخزين المؤقت الداخلية. للتأكد من أن ذاكرة التخزين المؤقت جديدة عند الاختبار يدويًا ، يمكنك تحديث النسخة المخبأة من خلال الانتقال إلى شاشة "My Apps & Games" في تطبيق Google Play. كبديل ، يمكنك ببساطة مسح ذاكرة التخزين المؤقت لتطبيق Google Play في الإعدادات. لاحظ أن هذه مجرد مشكلة للاختبار ولا تؤثر على المستخدمين النهائيين حيث يتم تحديث ذاكرة التخزين المؤقت يوميًا على أي حال.
IAUs Flow Flow in Pandao
كجزء من برنامج الوصول المبكر ، قمنا بدمج التدفق المرن لوحدات IAU (التنفيذ الموصى به) في تطبيق Pandao ، أي تطبيق سوق يقدم منتجات من الشركات المصنعة والبائعين الصينيين. تم عرض مربع حوار IAU على الشاشة الرئيسية ، لذلك كان الحد الأقصى لعدد المستخدمين قادرين على التفاعل معه. في البداية ، قررنا إظهار حوار IAU ليس أكثر من مرة واحدة يوميًا لتجنب إزعاج المستخدمين المخاطرة.
نظرًا لأن اختبار A / B هو خطوة محورية في كل دورة حياة من ميزات جديدة ، فقد قررنا تقييم تأثير IAU على تطبيق Pandao. لقد قسمنا مستخدمينا بشكل عشوائي إلى مجموعتين غير متداخلتين. الأولى هي مجموعة تحكم بدون وحدات وظيفية تمثل خط الأساس "بلا تغيير" ، والثانية عبارة عن مجموعة اختبار مع حوار IAUs.
التين. 1. اختبار A / B لوحدات IAU (التدفق المرن) في تطبيق Pandao.خلال الإصدارات القليلة الماضية ، قمنا بقياس النسبة المئوية للمستخدمين النشطين لكل إصدار تطبيق. لقد وجد أنه من بين المستخدمين النشطين الذين يتوفر آخرهم في إصدار زمني ، كان الجزء الرئيسي من المجموعة B ، أي المستخدمين الذين لديهم ميزة IAUS. كما ترون من الخطوط الأرجواني في التين. 1 ، في الأيام الأولى بعد نشر إصدار التطبيق 1.29.1 ، تجاوز عدد المستخدمين النشطين الذين لديهم ميزة IAU عدد المستخدمين بدون هذه الميزة. يمكن ملاحظة الموقف المعاكس للإصدارات السابقة من التطبيق ، راجع الخطوط الزرقاء والحمراء بعد نشر إصدار التطبيق 1.29.1. لذلك ، يمكن القول أن المستخدمين الذين لديهم IAU يميلون إلى تحديث إصدار التطبيق بسرعة أكبر.
التين. 2. معدل التأكيد في حوار IAU (التدفق المرن) في Pandao App .
وفقًا لبيانات تحليلات Pandao (انظر الشكل 2) ، يصل التحويل للنقر على زر التأكيد في مربع حوار IAU إلى قيم الذروة في الأيام الأولى من الإصدار ثم ينخفض باستمرار حتى يتم تحديث التطبيق التالي. يمكن ملاحظة نفس النمط عند التحويل للنقر على زر التثبيت في مطعم للوجبات الخفيفة ، والذي يبدأ في تثبيت التحديث الذي تم تنزيله. وبالتالي ، يبدو أن متوسط معدل التحويل في كلتا الحالتين يتناسب بشكل مباشر مع وتيرة الإصدارات. في Pandao ، يتجاوز متوسط معدل التحويل المقيس خلال شهر واحد 35 ٪ للنقر على زر التأكيد و 7 ٪ للنقر على زر التثبيت.
لقد اقترحنا أن تقليل معدل التأكيد مع مرور الوقت هو مجرد مشكلة في تجربة المستخدم ، لأن الأشخاص المهتمين بإصدار التطبيق الجديد سيتم تحديثهم بسرعة كبيرة ، وسيظل الأشخاص غير المهتمين بالتحديث غير مهتمين. استنادًا إلى هذه المعلومات ، قررنا التراجع عن بعض المستخدمين إذا لم يكونوا مهتمين بالتحديث ، بدلاً من سؤالهم كل يوم. يبدو أنه من الممارسات الجيدة تجربة منطق طلب مختلف استنادًا إلى "stalness" ، أي كم عمر الإصدار الذي يعمل عليه ، وعدد المرات التي طلب فيها المستخدم بالفعل تحديثًا وما إلى ذلك ، بدلاً من إزعاج المستخدمين.
نتيجة لذلك ، أظهرت وحدات المراجعة الداخلية نتائج قيمة أثناء اختبار A / B ، لذلك قمنا بتطبيق هذه الميزة لجميع المستخدمين.
شرائح معترف بها
أود أن أشكر مختلف الزملاء على مساهمتهم في هذا المقال. بفضل Maryna Pliashkova
Maryna_Pliashkova ، ألكساندر تشيرني
أليكسيرني ، إيليا نزاروف
رولاراكو ، جليب بوديباتشوفسكي ، دانييل بولوزوف
جوكرداب ، أنستازيا كوليك ، فلاديسلاف بريوس و فلاديسلاف
جولدان فلاديسكوس .