מומלץ שאפליקציות ל-Wear OS יפעלו באופן עצמאי בלי טלפון, כדי שהמשתמשים יוכלו לבצע משימות בשעון בלי גישה לטלפון Android או iOS. אם אפליקציית השעון שלכם דורשת אינטראקציה עם הטלפון, אתם צריכים לסמן את האפליקציה ל-Wear OS כלא עצמאית ולנקוט צעדים כדי לוודא שהמשתמש יכול להשתמש באפליקציה לטלפון.
תכנון האפליקציה
אתם יכולים להשתמש ב-Android App Bundle כדי ליצור באופן אוטומטי חבילות Android Package Kit (APK) שעברו אופטימיזציה לכל תצורת מכשיר של משתמש, במסגרת אותו דף אפליקציה. כך המשתמשים יכולים להוריד רק את הקוד והמשאבים שהם צריכים כדי להפעיל את האפליקציה.
מידע על הגדרת האפליקציה להפצה דרך חנות Google Play זמין במאמרים אריזה והפצה של אפליקציות ל-Wear OS ובמדריך לתחילת העבודה עם Android App Bundles.
באפליקציות חדשות, רמת ה-API לטירגוט חייבת להיות 30 ומעלה. מידע נוסף זמין במאמר בנושא עמידה בדרישות של Google Play בנושא רמת ה-API לטירגוט. כדי לוודא שהאפליקציה פועלת בצורה טובה בגרסה העדכנית ביותר של הפלטפורמה, צריך להגדיר את הערך targetSdkVersion לרמת API 30 (Wear OS 3).
מידע על בקשות רשת וגישה לרשת עם רוחב פס גבוה זמין במאמר גישה לרשת וסנכרון ב-Wear OS.
הגדרת אפליקציה כאפליקציה ל-Wear OS
צריך להגדיר את התג
<uses-feature> בקובץ המניפסט של האפליקציה ל-Android.
כדי לציין שמדובר באפליקציה ל-Watch, מוסיפים רשומה כמו זו:
<uses-feature android:name="android.hardware.type.watch" />
איך מזהים אפליקציה כנפרדת או כלא נפרדת
אפליקציית שעון נחשבת לעצמאית או ללא עצמאית:
- עצמאית: אפליקציה עצמאית לחלוטין שלא נדרשת לה אפליקציה לטלפון כדי להשתמש בתכונות העיקריות שלה. למרות שהנחיות כמו 'פתיחה בטלפון' הן מקובלות, האפליקציה צריכה לספק למשתמשים אמצעים חלופיים להשלמת פונקציה באפליקציה – כמו קישור מקוצר או קוד QR – בלי להסתמך על טלפון שמחובר למחשב.
- לא עצמאית: אפליקציה תלויה שנדרשת לה אפליקציה בטלפון או במכשיר אחר כדי להשתמש בתכונות הליבה שלה. האפשרות הזו מתאימה במיוחד לאפליקציות שלא יכולות לספק בקלות אמצעי חלופי – כמו קוד QR או קישור קצר – להשלמת פונקציה מרכזית באפליקציה, כמו אימות.
הערה: גם באפליקציות לא עצמאיות, המשתמשים יכולים להתקין את אפליקציית Wear OS לפני האפליקציה לנייד. לכן, אם אפליקציית Wear OS מזהה שבמכשיר נייד סמוך חסרה האפליקציה הנלווית הנדרשת, צריך להציג למשתמש בקשה להתקין את האפליקציה הנלווית.
Google מאמתת את הדיוק של הסטטוס העצמאי של אפליקציה במהלך הצגת האפליקציה. הערך הזה משפיע על החשיפה של האפליקציות בחנות Play במכשירים לא מקושרים, כמו מכשירי Wear OS שלא משויכים למכשירים ניידים. אפליקציות שאינן עצמאיות – וגם אפליקציות שמפתחים מסמנים בטעות כ'עצמאיות' – לא זמינות למשתמשים במכשירים האלה שלא מחוברים למחשב.
באפליקציית Wear OS, מגדירים את הערך של אלמנט
meta-data com.google.android.wearable.standalone
בקובץ המניפסט של Android כדי להצהיר אם האפליקציה היא עצמאית או לא.
אם אפליקציית השעון היא אפליקציה עצמאית לחלוטין, צריך לציין זאת בחנות Google Play על ידי הגדרת הערך של com.google.android.wearable.standalone ל-true:
<meta-data android:name="com.google.android.wearable.standalone" android:value="true" />
אם אפליקציית השעון לא עומדת בפני עצמה ותלויה באפליקציה אחרת כדי להפעיל תכונות עיקריות,
צריך להגדיר את הערך של com.google.android.wearable.standalone ל-false. המשמעות היא שאפליקציית השעון דורשת מכשיר אחר, אבל אין לכך השפעה על קידום האפליקציה בחנות Google Play.
הערה:
גם אם הערך של com.google.android.wearable.standalone הוא
false, אפשר להתקין את האפליקציה לשעון לפני שמתקינים את האפליקציה לטלפון.
לכן, אם אפליקציית השעון מזהה שלטלפון הנלווה חסרה אפליקציית הטלפון הנדרשת, כמו שמתואר בדף הזה, צריך להציג למשתמש בקשה להתקין את אפליקציית הטלפון.
אחסון משותף של קוד ונתונים
אפשר לשתף קוד בין אפליקציית Wear OS לבין אפליקציה לטלפון. לדוגמה, קוד משותף לרשת יכול להיות בספרייה משותפת.
אפשר גם להוסיף קוד שספציפי לגורם צורה מסוים במודול נפרד.
אתם יכולים להשתמש בממשקי API סטנדרטיים של Android לאחסון כדי לאחסן נתונים באופן מקומי, כמו בטלפון. לדוגמה, אפשר להשתמש ב-SharedPreferences APIs או בספריית Room persistence.
זיהוי האפליקציה במכשיר אחר
אפליקציית השעון והאפליקציה התואמת לטלפון יכולות לזהות אם האפליקציה השנייה זמינה.
אפליקציות הטלפון והשעון יכולות להשתמש ב-
CapabilityClient כדי לפרסם את הנוכחות שלהן במכשיר מוצמד. הם יכולים לעשות זאת באופן סטטי או דינמי.
כשמפעילים אפליקציה בצומת ברשת Wear OS של משתמש, למשל בטלפון, בשעון שמצורף או בענן, הסמל CapabilityClient מאפשר לאפליקציות אחרות לזהות אותה. מידע נוסף זמין במאמר בנושא
יכולות הפרסום.
אם אחת מהאפליקציות לא מצליחה לזהות את השנייה, אפשר להציג למשתמש הנחיה לפתוח את דף האפליקציה בחנות Play במכשיר המושפע. זהו פתרון לאפליקציות לשעון שנדרשת בהן נוכחות של אפליקציית הטלפון הנלווית כדי לפעול בצורה תקינה.
צריך לבדוק אם חנות Play זמינה במכשיר, כי לא כל הטלפונים – כמו אייפונים – תומכים בחנות Play.
בקטעים הבאים מתוארות שיטות מומלצות לשני תרחישים:
- האפליקציה העצמאית לשעון צריכה את האפליקציה לטלפון.
- אפליקציית הטלפון צריכה את אפליקציית השעון העצמאית.
אפשר גם לעיין ב
דוגמה לשימוש ב-Datalayer helpers, שבה מוסבר איך להשתמש ב
ספריות Datalayer helpers, שהן חלק מ-
Horologist. הכלים האלה מאפשרים לכם לעקוב אחרי החיבור בין מכשיר נייד לבין מכשיר Wear OS.
מידע נוסף על המחלקות שמתוארות בקטע הבא זמין במאמרי העזרה של Wear OS API.
ההפניה הזו כוללת גם מידע על המחלקה
PhoneTypeHelper, שמכילה את השיטה
getPhoneDeviceType() שמאפשרת לאפליקציית Wear OS לבדוק אם הטלפון הנלווה הוא מכשיר Android או iOS.
ציון שמות של יכולות לזיהוי האפליקציות
באפליקציה שמתאימה לכל סוג מכשיר, בין אם זה שעון או טלפון, צריך לציין מחרוזת ייחודית לשם היכולת בקובץ res/values/wear.xml.
לדוגמה, בקובץ wear.xml של מודול לנייד:
<resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@array/android_wear_capabilities"> <string-array name="android_wear_capabilities"> <item>verify_remote_example_phone_app</item> </string-array> </resources>
במודול Wear OS, הקובץ wear.xml כולל ערך שונה לשם היכולת, כמו:
<resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@array/android_wear_capabilities"> <string-array name="android_wear_capabilities"> <item>verify_remote_example_wear_app</item> </string-array> </resources>
מידע נוסף זמין במאמר יכולות של Advertise.
זיהוי אפליקציה ופתיחת כתובת URL משעון
אפליקציית השעון יכולה לזהות אם בטלפון הנלווה של המשתמש מותקנת אפליקציית הטלפון שלכם. כך עושים זאת:
-
משתמשים ב
CapabilityClientכדי לבדוק אם אפליקציית הטלפון מותקנת בטלפון המותאם. מידע נוסף זמין במאמר בנושא Datalayer helpers sample ב-GitHub. -
אם אפליקציית הטלפון לא מותקנת בטלפון, צריך להשתמש בשיטה
PhoneDeviceType.getPhoneDeviceType()כדי לבדוק את סוג הטלפון. פרטים נוספים מופיעים בקטע הבא. -
אם
PhoneDeviceType.DEVICE_TYPE_ANDROIDמוחזר, הטלפון הוא טלפון Android. מתקשרים אלRemoteActivityHelper.startRemoteActivity()במכשיר Wear OS כדי לפתוח את חנות Play בטלפון. משתמשים ב-URI של חנות האפליקציות עבור אפליקציית הטלפון, שיכול להיות שונה מה-URI של אפליקציית Wear. לדוגמה, אפשר להשתמש ב-URI של שוק כמו:market://details?id=com.example.android.wearable.wear.finddevices. -
אם מוחזר הערך
PhoneDeviceType.DEVICE_TYPE_IOSהטלפון הוא טלפון iOS שחנות Play לא זמינה בו. פותחים את App Store באייפון על ידי התקשרות אלRemoteActivityHelper.startRemoteActivity()במכשיר Wear OS. אפשר לציין את כתובת ה-URL של האפליקציה ב-iTunes, למשלhttps://itunes.apple.com/us/app/yourappname.מ-Wear OS, אי אפשר לקבוע באופן פרוגרמטי אם אפליקציית הטלפון מותקנת במכשיר iOS. מומלץ לספק למשתמש מנגנון להפעלה ידנית של פתיחת ה-App Store.
הערה: אפשר להשתמש ב-API RemoteActivityHelper שמתואר למעלה כדי לציין שכל כתובת URL תיפתח בטלפון מהשעון, ושלא נדרשת אפליקציה בטלפון.
פרטים על זיהוי הסוג של הטלפון המותאם
הנה קטע קוד שמשתמש בשיטה getPhoneDeviceType() כדי לבדוק את סוג הטלפון שהשעון משויך אליו:
var phoneDeviceType: Int = PhoneTypeHelper.getPhoneDeviceType(this)
הערך שמוחזר על ידי ה-method getPhoneDeviceType() הוא אחד מהערכים הבאים:
| הערך המוחזר | תיאור |
|---|---|
DEVICE_TYPE_ANDROID
|
הטלפון המשני הוא מכשיר Android. |
DEVICE_TYPE_IOS
|
הטלפון הנלווה הוא מכשיר iOS. |
DEVICE_TYPE_UNKNOWN
|
הטלפון המשני הוא מכשיר לא מוכר. |
DEVICE_TYPE_ERROR
|
קרתה שגיאה בקביעת סוג הטלפון המזווג. צריך לבצע בדיקה נוספת מאוחר יותר. |
זיהוי אפליקציות מטלפון Android
טלפון Android יכול לזהות אם למשתמש יש מכשירי Wear OS עם אפליקציית השעון שלכם. כדי לעשות את זה:
-
באמצעות
NodeClient, מוצאים את כל השעונים שמחוברים לטלפון של המשתמש. מידע נוסף זמין במאמר בנושא Datalayer helpers sample ב-GitHub. -
באמצעות הסמל
CapabilityClient, בודקים באילו מהשעונים של המשתמש האפליקציה מותקנת. -
אם האפליקציה לא מותקנת בכל השעונים של המשתמש, צריך לאפשר למשתמש לפתוח את חנות Play במכשירי Wear OS הנותרים מהטלפון באמצעות השיטה
RemoteActivityHelper.startRemoteActivity(). משתמשים ב-URI של חנות האפליקציות לאפליקציית Wear OS, שיכול להיות שונה מה-URI של אפליקציית הטלפון. לדוגמה, אפשר להשתמש ב-URI של שוק כמו:market://details?id=com.example.android.wearable.wear.finddevices.
נתוני מיקום בשעונים שמצורפים לאייפונים
בשעונים שמשויכים לאייפונים, אפשר להשתמש ב- Fused Location Provider (FLP) כדי לקבל נתוני מיקום בשעון. מידע נוסף זמין במאמר בנושא זיהוי מיקום ב-Wear OS.
אם הטלפון המשני זמין, FLP משתמש בטלפון המשני כדי לקבל נתוני מיקום.
איסוף רק של נתונים נחוצים
בדרך כלל, כשמקבלים נתונים מהאינטרנט, צריך לקבל רק את הנתונים הנחוצים. אחרת, יכול להיות שתוסיפו זמן אחזור, שימוש בזיכרון ושימוש בסוללה שלא לצורך.
כששעון מחובר באמצעות חיבור Bluetooth LE, יכול להיות שלאפליקציה תהיה גישה לרוחב פס של 4 קילובייט לשנייה בלבד, בהתאם לשעון. לכן מומלץ לבצע את השלבים הבאים:
- בודקים את הבקשות והתשובות ברשת כדי לראות אם יש נתונים נוספים שנדרשים רק לאפליקציה לטלפון.
- כדאי להקטין תמונות גדולות לפני ששולחים אותן ברשת לשעון.
במקרים שבהם נדרשת רשת עם רוחב פס גבוה, אפשר לעיין במאמר בנושא גישה לרשת עם רוחב פס גבוה.
דוגמאות קוד נוספות
הדוגמה Datalayer helpers sample ממחישה עוד יותר את השימוש בממשקי ה-API שמוסברים בדף הזה.