ما تريد معرفته قبل كتابة تطبيق لـ Apple Watch: تجربتنا

تنتظرك منصة بطيئة جدًا ، والانتقال إلى أطر جديدة ، والاختبار مع جو خاص وإشعارات من نظام التشغيل "مرحبًا ، انتقل" في الثانية قبل التفريغ الإجباري لمؤشر الترابط.


نعم ، هذه يدي المشعرة ،

جدول رحلاتنا يستوعب 600 ألف شخص يوميًا. وكل عام أكثر وأكثر - من خلال تطبيق الهاتف المحمول. فكرنا وقررنا عمل نسخة للساعة. كانت المشكلة أننا لم نكن نعرف عدد Apple Watch الموجودة في السوق الروسية ، وكم منهم يركبون القطارات الكهربائية. ولكن على أي حال ، كان من الضروري معرفة كيفية القيام بذلك ، لذلك أخذنا وكتبنا إلى Apple نطلب إحصائيات.

ومن الغريب أنهم لم يفعلوا ذلك. ثم ساعدوا بكل طريقة ممكنة ، ولكن هنا مع الإحصائيات توجد مشكلة مباشرة. لم يكن لدى أي شخص بيانات عادية حتى عام مضى ، وحتى دراسة تقارير المبيعات لم تساعد. يتم إحضار الساعات بطرق عديدة إلى اللون الرمادي وليس من منطقتنا في البداية.

لماذا الإحصائيات؟ لفهم عدد الأجيال الموجودة في السوق. في النهاية ، قررنا دعم جميع الأجهزة.


تبدو الإحصائيات الأخيرة التي نعرفها لعام 2017 كما يلي:

  • الجيل الأول (الكل) - 57٪
  • السلسلة 2 (الكل) - 32٪
  • السلسلة 1 (الكل) - 11٪

في المستقبل ، كان لدينا ثلاثة أشهر بعد الإصدار في 2019 على النحو التالي:

  • Apple Watch Series 3 (الكل) - 36٪
  • السلسلة 4 (الكل) - 31٪
  • السلسلة 5 (الكل) - 24٪
  • الجيل الأول (الكل) - 4.5٪
  • السلسلة 2 (الكل) - 2.5٪
  • السلسلة 1 (الكل) - 2٪

توزيع حجم الشاشة من المراجعتين الأخيرتين:

  • S4 كبير عند 44 مم - 58٪ ، صغير 40-42٪.
  • S5 كبير - 60٪ ، صغير 40٪.

لا تزال النماذج السابقة تحتوي على 38 ملم ، في العدد الإجمالي لجميع عمليات التثبيت ، فهي أقل بقليل من 20 ٪ ، ويرجع ذلك أساسًا إلى S3. بالمناسبة ، نحن بحاجة إلى خطوط لأحجام الشاشة المختلفة - قام المصممون لدينا بعمل خطوط متكيفة.

منصة بطيئة للغاية


لذا ، يبدو أننا لا نمتلك الكثير من الأجهزة ، ولكن حتى 5٪ منها (كما هو متوقع) ستكون قديمة جدًا. تم تصميم الساعات الأولى بشكل عام ، على ما يبدو ، مثل جهاز يعرض الصور التي تم إنشاؤها على الهاتف. ثم ظهر نظام التشغيل المطور الخاص به ، وفي المراجعات اللاحقة - أيضًا Wi-Fi وبطاقة SIM.

بطاقة SIM في روسيا لا تعمل. ربما يوافق المشغلون هذا العام ، ولكن حتى الآن لا يوجد سوى اتصال wifi عبر الهاتف (تتصل الساعة بجهاز iPhone عبر Bluetooth ، ثم تستخدم اتصالها بالإنترنت).

منطق العمل مع الشبكة والذاكرة والقرص هو نفسه تقريبا في iOS.أعني ، المنطق نفسه شائع ، والخدمات شائعة ، ولكن لا يزال هناك كمين مع المكتبات - في الواقع ، لا يتطور الكثير من الأشخاص لساعات ، لذلك قد لا يكون هناك أي أطر وأدوات شعبية على iOS / iPadOS. في حالتنا ، كان هذا يعني الحاجة إلى التخلي عن كومة من المكتبات التي ربطناها بتطبيق iOS مع حركة اليد المعتادة.

بدون استثناء ، تقوم جميع الساعات بالوصول إلى القرص ببطء شديد مقارنة بكيفية قراءتها من الذاكرة. إذا كنت لا تستطيع فعلاً الإزعاج على جهاز iPhone بالضبط حيث يوجد جدول 40 كيلوبايت بالضبط ، فمن المهم على الساعة الاحتفاظ به في الذاكرة أو استقباله في الهواء. الشيء الأكثر أهمية هو عدم قراءة أي شيء من القرص.

بالطبع ، كلما كانت الساعة أحدث ، زادت سرعة دورانها ، ولكننا في الواقع نعمل مع S3 مع دعم الأجهزة السابقة وميزات إضافية لـ S4 و S5.

نسخة ألفا من التطبيق ، والتي أظهرت المسار إلى المنزل ، تم تحميلها لساعات عشرات الثواني. تم عرض جدول مركز عملائي لمدة 20 ثانية في أقرب 4 قطارات. كانت المشكلة في تقديم الجدول - الكثير من العناصر الفردية. تخيل متصفحًا حديثًا يحاول تقديم شيء ما على قلب 386SX. لذلك كان لدينا مشاكل مماثلة.

بطبيعة الحال ، هذا هو السبب في أنها ألفا تتجول معها. بواسطة بيتا ، قمنا بتوزيع الحمل عبر الخيوط (التقاط ميزة على طول الطريق عندما تبدأ الساعة على watchOS 4 ، لا تبدأ نقطة الدخول الرئيسية في التيار الرئيسي). في الساعات "الضعيفة" ، كان عدد الخلايا في الواجهة محدودًا.


تم تقديم كل واحد منهم لمدة ثانية تقريبًا.



بعض التحسينات لواجهة المستخدم نفسها ، وطارت إلى S4 ، وللأجهزة القديمة كان عليها تقليل عدد القطارات المعروضة.

لقد أدرجوا فوق وأسفل "إظهار المغادرين" و "العرض التالي" ، وعلى المختارين - "إظهار الكل". نظرًا لأن هذا الجدول الزمني يتغير في كثير من الأحيان ، فقد كان من الضروري في الغالب إعادة رسمه: نحن نتحدث عن المواقف التي تتغير فيها تركيبة الجدول إما بسبب مغادرة القطار ، أو بسبب تغيير في الجدول الزمني (نظهر حركة في الوقت الفعلي ، أي أننا نعرف أين بالضبط كل معين التدريب في الواقع ، وكيف ستؤثر على جميع المحطات الأخرى على طول الطريق).

غالبًا ما تكون هناك حالات عندما تصبح البيانات قديمة بعد ثانية من الطلب. مع النهج الأساسي ، كان الجدول بأكمله ملتويًا ، وهذه هي الطريقة القياسية لـ iOS. هناك ، التحديث غير محسوس بشكل عام. وهنا قاموا بالكثير من الهراء بناءً على معالجة الصفيف الوارد ، الذي يوزع البيانات أولاً ، ثم ينشئ الاختلاف ، ثم يجد عناصر واجهة المستخدم التي يمكن تغييرها دون لمس الباقي ، ثم يقوم بتحديثها فقط. لا توجد مكتبات مناسبة لحل كامل على WatchOS ، ولكن هناك مجموعة أدوات التفاضل ، والتي تقدم قائمة بكيفية وما الذي تغير بواسطة الفهارس بواسطة مصفوفة البيانات مع الترميز. كتبوا رمزهم حوله ووضعوه على جميع الطاولات. هذا أعطى زيادة في تحديثات الأداء.

بشكل عام ، يتم عرض أقرب قطارات N بسرعة ، وإذا كنت ترغب في الانتظار ، ولكنك تريد صورة كاملة ، يمكنك النقر فوق "إظهار الكل".

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



لماذا التسجيل المستمر ضروري؟ لأنه إذا قام المستخدم بتبديل التطبيق ، يحدث التفريغ على الفور تقريبًا. لا يتوفر لديك عادةً وقت لكتابة أي شيء على قرص الكبح ، لذلك تحتاج إلى القيام بذلك باستمرار وبشكل متكرر أثناء عمل المستخدم.

ثم نقترب من الكمين التالي.

حفظ الطاقة الهوسي


البطارية في الساعة صغيرة ، ويتم شحذ نظام التشغيل بالكامل من أجل توفير الطاقة إلى أقصى حد. عمليًا ، قد يعني هذا أن المستخدم يقوم بما يلي:

  1. لبدء تنزيل شيء (على سبيل المثال ، جدول كامل)
  2. يخفض اليد
  3. ينتظر
  4. يرفع يده لرؤية ما يتم تحميله

في الواقع ، يحدث ما يلي:

  1. يبدأ المستخدم تنزيل الجدول الكامل
  2. يخفض اليد
  3. تفهم الساعات أنها لا تعمل معها وتضع العملية في تناظرية من الإهمال.
  4. ينتظر المستخدم ، ثم يرفع يده لإلقاء نظرة على النتيجة.
  5. في وقت الصعود ، تدرك الساعة أنها تواصل العمل معهم ، وتستيقظ وتوقظ العملية.
  6. يرى المستخدم بداية مؤشر التنزيل.

في نفس الوقت ، من وجهة نظر الخيط ، يمكن أن يكون هذا هو الوقت المناسب أو "ثانية طويلة جدًا" - إذا قمت بكتابة رمز في مهلة ، يمكنك التقاط فجأة حتى عام حيث كان نصف ثانية ينتظر. لذلك ، فقط تذكر أن الوقت نسبي.

تهددك عملية الاستيقاظ من خلال عملية تصحيح أخطاء طويلة - حيث يمكنك اكتشاف حالات التعطل على حقيقة أن المكان قد تم إخلاؤه أو حدث شيء آخر مثير للاهتمام.

يمكن أن تتحول عملية النوم إلى عملية تفريغ (بدون الاستيقاظ) ، لذلك تحتاج إلى كتابة بعض الأشياء على القرص. يخبر نظام التشغيل سلسلة المحادثات "Go to Background" ويستدعي الطريقة المناسبة. عادة ما يكون لديك حوالي ثانية للخروج بسرعة وتفريغها في الخلفية. عندما يقوم المستخدم بذلك أثناء الكتابة على قرص (وهو ما أذكر أنه بطيء بشكل رهيب على الأجهزة حتى S4) ، فقد لا يتم التسجيل. للقيام بذلك ، تحتاج إلى الدخول في وضع "التشغيل المهم" ، وبمساعدة العديد من المكالمات الخاصة ، اجعل الخيط "واعيًا". للقيام بذلك ، تحتاج إلى معالج منفصل يسأل عن عملية التسجيل متى ستنتهي ، ثم يحرر الخيط للنوم.

هندسة معمارية


كان تطبيقنا الأول في عام 2017 فارغًا وقادرًا على عرض الجدول الزمني الذي تم إنشاؤه على الهاتف. تم استخدامه لإظهار البيانات لقطار مسافات طويلة على مسار وسيارة ومكان.

الإصدار الحديث للقطارات هو "بالغ" ومستقل ، أي أنه يمكن أن يعيش في أي وقت بدون هاتف. حتى من لحظة التثبيت (على الرغم من أن الطريقة المعتادة لدخول التطبيق إلى الساعة هي عبر الهاتف ، وفي هذه المرحلة يكون من السهل جدًا نسخ بيانات الملف الشخصي وجميع المسارات المحددة من الهاتف).

ربما تكون البنية على الساعة هي الأكثر حداثة في أنماط iOS. Redux ليس مشكلة. نحن ، كما في التطبيق "الكبير" ، نستخدم آلة الدولة. MVC القياسي هو هذا: هناك نموذج من جهة ، وهناك وجهات نظر لهذا النموذج ، في منتصف وحدة التحكم. تحكم يأخذ البيانات من النموذج ، يحول ، يعرض على الشاشة. في الاتجاه المعاكس ، تستمع وحدة التحكم لعرض الرسائل وتوفر البيانات للنموذج. بناءً على هذا النمط ، تم إنشاء العديد من أنواع البنى.

لدينا دولة حيث يمكن للأحداث أن تطير وتحولها. الآثار الجانبية ، التي تؤدي عملاً مفيدًا ، يمكن أن تبتعد عن الدولة. من هذه النتائج ، تطير الأحداث إلى الدولة. يتم تخزين الحالة الكاملة للتطبيق في القصة ، مثل نقطة واحدة من الحقيقة. يمكن تقسيم الحالة إلى أجزاء وتقسيمها ، ولكن على أي حال ، تقوم بتخزين مجموعة البيانات الكاملة. يعتمد التنفيذ المحدد للهندسة المعمارية على الدين ، لدينا RXFeedback.

آلة الحالة مغطاة جيدًا بالاختبارات. هذا وفر لنا الكثير من الوقت على الساعة فقط ، لأنه لا يمكن إجراء الاختبار داخل الساعة نفسها. هذا ليس iPhone بالنسبة لك. هنا تحتاج إلى القيام بذلك:

  1. قم ببناء التطبيق على المحاكي وانظر.
  2. . , . id Xcode .




لقد استخدمت S4 و S1 للاختبار. نظرًا لأنه من الصعب جدًا فحص الكثير من الأشياء على الساعة نفسها ، فقد تبين أنها ملائمة بشكل لا يصدق لعزل حالات (حالات) معينة ، ونقلها إلى مكون آخر وهناك بالفعل تغطية بالاختبارات من جميع الجوانب.

يسر Xcode العاشر (الذي كان قبل أكتوبر 2019) أنه لسبب ما عندما بدأ التطبيق على مدار الساعة ، توقف عن العمل في المحاكي. تقرر من خلال قطع المطهر التجاري ، إذا كان أي شخص مهتمًا.

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

الحكم الذاتي


حالة الاستخدام الأساسي - لدى المستخدم ساعة وهاتف. يحملهم بانتظام معًا ، ويمكن للساعة استخدام الإنترنت من الهاتف.



مع إصدارات الساعة الجديدة ، أصبح من الممكن استخدام شبكة Wi-Fi الخاصة بك وبطاقة SIM الخاصة بالساعة (توجد شريحة إلكترونية مدمجة).

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

خلاف ذلك ، التطبيق غير متصل بالهاتف. ذاكرة التخزين المؤقت في الداخل ، يتم إرسال الطلبات إلى الشبكة من الساعة (إن أمكن) ، إن لم يكن ، عبر الجسر عبر الهاتف. ونتيجة لذلك ، يمكنك استخدامه بشكل مستقل للمدة التي تريدها ، ولكنك تحتاج فقط إلى تثبيت التطبيق بطريقة أو بأخرى للمرة الأولى (لا يدعم نسختنا التثبيت من الساعة مباشرة من التطبيق). بعد ذلك ، يمكنك نسيان التزامن ، إذا كنت تريد. قبل watchOS 2 ، كان مخطط التطبيق المعتاد هو أن كل شيء تم حسابه وتنفيذه على الهاتف ، والساعة أدت إلى النتيجة فقط.

مجموع


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

All Articles