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

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

איך נמנעים מכפילויות בתזכורות

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

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

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

הגדרת תג גשר בהתראה באמצעות setBridgeTag(String) כפי שמוצג בדוגמת הקוד הבאה:

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

השבתת הגישור

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

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

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

BridgingManager.fromContext(context).setConfig(
    BridgingConfig.Builder(context, false)
        .addExcludedTags(listOf("tagOne", "tagTwo", "tagThree"))
        .build()
)

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

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

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

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

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

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

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

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

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

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

fun setDismissalId(dismissalId: String): WearableExtender
fun getDismissalId(): String

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

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

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

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

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

כשהתראות לא מקושרות

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

שיטות מומלצות להתראות מקושרות

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

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

שיקולים לגבי התכנון

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