אפשרויות גישור להתראות

כברירת מחדל, ההתראות מגשרות או משותפות מאפליקציה בטלפון לכל השעונים המותאמים. אם אתם יוצרים אפליקציה לשעון והאפליקציה קיימת גם בטלפון שמחובר לשעון, יכול להיות שהמשתמשים יקבלו התראות כפולות – אחת שנוצרה על ידי אפליקציית הטלפון והועברה ממנה, ואחת שנוצרה על ידי אפליקציית השעון. Wear OS כולל תכונות לשליטה באופן ובזמן שבהם ההתראות מועברות.

איך להימנע מהתראות כפולות

כשיוצרים התראות ממקור חיצוני, כמו Firebase Cloud Messaging, כל אחת מהאפליקציה לנייד ומהאפליקציה למכשיר הלביש יכולה להציג התראות משלה בשעון. כדי להימנע משכפול כזה, צריך להשבית את הגישור באפליקציה לציוד לביש באופן פרוגרמטי.

שימוש בתגי גישור

אם רוצים להעביר חלק מההתראות שנוצרו באפליקציה לנייד לשעון כשהאפליקציה למכשיר הלביש מותקנת, צריך להגדיר תגי גישור.

כדי להגדיר תג bridge בהתראה, משתמשים בשיטה setBridgeTag(String), כמו בדוגמת הקוד הבאה:

val notification = NotificationCompat.Builder(context, channelId)
    // ... set other fields ...
    .extend(
        NotificationCompat.WearableExtender()
            .setBridgeTag("tagOne")
    )
    .build()

השבתת הגישור

אתם יכולים להשבית את הגישור לחלק מההתראות או לכל ההתראות. מומלץ להשבית את הגישור באופן סלקטיבי.

השבתת הגישור עבור חלק מההתראות

אתם יכולים להשבית באופן דינמי את הגישור, ואם תרצו, לאפשר מעבר של התראות מסוימות על סמך התג שלהן. לדוגמה, כדי להשבית את הגישור לכל ההתראות חוץ מאלה שתויגו כ-tagOne, tagTwo או tagThree, משתמשים באובייקט BridgingConfig כמו בדוגמה הבאה:

// In this example, bridging is only enabled for tagOne, tagTwo and tagThree.
BridgingManager.fromContext(context).setConfig(
    BridgingConfig.Builder(context, isBridgingEnabled = false)
        .addExcludedTags(listOf("tagOne", "tagTwo", "tagThree"))
        .build()
)

השבתת הגישור לכל ההתראות (לא מומלץ)

הערה: לא מומלץ להשבית את הגישור לכל ההתראות, כי הגדרת הגישור שמוגדרת במניפסט נכנסת לתוקף ברגע שאפליקציית שעון מותקנת. המשמעות היא שההתראות עלולות ללכת לאיבוד אם המשתמש צריך לפתוח את האפליקציה לשעון ולהגדיר אותה לפני שהוא מקבל התראות.

כדי למנוע העברה של כל ההתראות מאפליקציית טלפון, משתמשים ברשומה <meta-data> בקובץ המניפסט של אפליקציית השעון, כמו בדוגמה הבאה:

<!-- Beware, this can have unintended consequences before the user is signed-in -->
<meta-data
    android:name="com.google.android.wearable.notificationBridgeMode"
    android:value="NO_BRIDGING" />

הערה: הגדרת גישור בזמן ריצה מבטלת הגדרה שקשורה לגישור בקובץ המניפסט של Android.

הגדרת מזהה לסגירת התראות כדי לסנכרן התראות דומות

כשמונעים את הגישור באמצעות התכונה 'מצב גישור', סגירת ההתראות לא מסתנכרנת בין המכשירים של המשתמש.

עם זאת, אם נוצרות התראות דומות גם במכשיר הנייד וגם בשעון, אתם רוצים ששתי ההתראות ייסגרו כשהמשתמש סוגר אחת מהן.

בקטע NotificationCompat.WearableExtender, אפשר להגדיר מזהה גלובלי ייחודי, כך שכשהתראה נסגרת, גם התראות אחרות עם אותו מזהה בשעונים המזווגים נסגרות.

למחלקה NotificationCompat.WearableExtender יש שיטות שמאפשרות להשתמש במזהי סגירה, כמו בדוגמה הבאה:

כשמבטלים את ההתראה, כל ההתראות האחרות עם אותו מזהה ביטול מבוטלות בשעון ובטלפון. כדי לאחזר מזהה של סגירת התראה, משתמשים בפקודה getDismissalId()

בדוגמה הבאה, מוגדר מזהה ייחודי גלובלי להודעה חדשה, כך שהסרת ההודעות מסונכרנת:

val notification = NotificationCompat.Builder(context, channelId)
    // ... set other fields ...
    .extend(
        NotificationCompat.WearableExtender()
            .setDismissalId("abc123")
    )
    .build()

הערה: מזהי סגירה פועלים אם השעון מוצמד לטלפון Android, אבל לא אם השעון מוצמד לאייפון.

מתי ההתראות לא מגשרות

ההתראות מהסוגים הבאים לא מגשרות:

שיטות מומלצות להעברת התראות

לוקח זמן לשלוח או להסיר התראות מגשרות ממכשיר לביש. כשמעצבים את ההתראות, חשוב להימנע מהתנהגות בלתי צפויה שנגרמת בגלל זמן האחזור הזה. ההנחיות הבאות יעזרו לכם לוודא שההתראות המגשרות פועלות עם התראות אסינכרוניות:

  • אם מבטלים התראה בטלפון, יכול להיות שיעבור זמן עד שההתראה התואמת תבוטל בשעון. במהלך הזמן הזה, יכול להיות שהמשתמש ישלח אחת מהכוונה בהמתנה בהודעה הזו. לכן, כדי להמשיך לקבל כוונות בהמתנה באפליקציה מהתראות שהיא ביטלה: כשמבטלים התראות, צריך לשמור על תוקף מקבלי הכוונות בהמתנה של ההתראות האלה.
  • לא לבטל ולהפעיל מחדש את כל סדרת ההתראות בבת אחת. משנים או מסירים רק את ההתראות שבאמת שונו. כך תוכלו להימנע מהשהיה בעדכון המכשיר הלביש ולצמצם את ההשפעה של האפליקציה על חיי הסוללה.

שיקולים לגבי העיצוב

להתראות ב-Wear OS יש הנחיות עיצוב משלהן. מידע נוסף זמין בהנחיות לעיצוב ב-Wear OS.