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

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

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

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

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

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

כדי להגדיר תג bridge בהתראה, משתמשים ב-method‏ 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" />

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

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

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

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

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

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

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

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

התראות מקומיות בלבד

כדי למנוע התראות כפולות, אפשר גם להשתמש ב-setLocalOnly() כדי שההתראות יהיו מקומיות לטלפון.

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

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

לדוגמה, אפשר להשתמש בהתראה מקומית בלבד כשמשתמש מוריד קובץ בטלפון וההתראה מציינת שההורדה הסתיימה.

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

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

שיקולים להטמעה של התראות מגשר

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

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

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

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