
NotificationCompat.Builder עם this כ-Context, ומגדירים בו סדרת פרמטרים.New Message.You've got a new message) וטקסט (click to see the new message).setLargeIcon מקבלת Bitmap ולא מזהה, ולכן ממירים בעזרת BitmapFactory.decodeResource(getResources(), id).setAutoCancel(true) גורם להתראה להיעלם כשהמשתמש לוחץ עליה ונפתחת Activity. אם לא נפתחת Activity אין לכך משמעות וההתראה נשארת עד שהמשתמש מסיר אותה.builder.build() יוצר את האובייקט, ו-NotificationManagerCompat.from(this).notify(id, notification) מציג אותו.notificationId שמוגדל בכל לחיצה (notificationId++) מקבלים התראות נפרדות.הטקסט המלא של הדקות הראשונות בהרצאה «Show Notification» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אנחנו מגיעים לנושא חדש שנקרא Notifications. Notification זאת ההודעה הקטנה שלפעמים מוצגת כאן למעלה, ושאז המשתמש יכול לבצע איזושהי גלילה כזאת ולראות את תוכן ההודעה.
לפעמים אם הוא לוחץ על התוכן של ההודעה, אנחנו יכולים להציג לו Activity ספציפית באפליקציה שלנו. אז למה Notifications משמשים? יכול להיות שאנחנו קיבלנו איזושהי הודעה מסוימת משרת שלנו, ואנחנו רוצים לומר למשתמש שקיבלנו את ההודעה הזאת מבלי יותר מדי להפריע לו, ואז אנחנו מציגים לו את ההתראה הזאת או את
הנוטיפיקיישן למעלה, ואם הוא רוצה שיפתח ויראה את המידע. לפעמים אנחנו רוצים לומר למשתמש שהתרחשו כל מיני דברים, לדוגמה שסיימנו לטעון איזשהו קובץ מהשר"ט או שהורדנו איזושהי תמונה או שתהליך מסוים הסתיים, ואנחנו פשוט רוצים להציג לו את ההתראות האלה והוא יוכל ללחוץ עליהן ולראות מידע נוסף.
היה מובן שברוב המקרים אנחנו נרצה שההתרעות האלה יופיעו כתגובה לדברים שקרו במכשיר, אבל בשביל רק לראות איך כל הסיפור הזה נעשה אנחנו הולכים בסרטון הזה לעשות הצגה של נוטיפיקיישן כתגובה ללחיצה על לחצן, משהו שבדרך כלל אנחנו לא נעשה באפליקציה אמיתית.
אנחנו לא נרצה שהיוזר ילחץ על לחצן ואז יראה נוטיפיקיישן כתגובה ללחיצה, לצורך הלימוד של איך זה נעשה נעשה את זה כרגע על ידי לחיצה על לחצן.
בהמשך נציג Notification כתגובה למשהו שבאמת קרה במכשיר. אז קודם כל יש לנו פה לחצן פשוט, בואו ניכנס לקוד שלו ובלחיצה עליו אנחנו רוצים לכתוב קטע קוד קצר שפשוט יציג לנו איזושהי התראה על המכשיר.
אז בואו נראה איך זה מתבצע. אז אנחנו רוצים לבנות Object מטיפוס NotificationCompat נקודה בילדר האובייקט הזה מאפשר לבנות את הנוטיפיקיישן ואז נוכל להציג אותה אז בואו ניצור את האובייקט מסוג נוטיפיקיישן קומפט נקודה בילדר אנחנו צריכים להעביר את הקונטקסט אז
בואו נעביר this והדבר הבא שאנחנו עושים זה מגדירים לבילדר סדרה של פונקציות שכל אחת מגדירה משהו אחר בנוטיפיקיישן שאנחנו מציגים.
הדבר הראשון שאנחנו רוצים להגדיר זה משהו שנקרא תיקר. תיקר זה בעצם הטקסט שרואים באזור העליון של האפליקציה. זאת אומרת שאם אנחנו מסתכלים על המכשיר אנחנו נראה כאן למעלה את הטקסט בחלק מהמכשירים, לא בכולם.
אז בואו נגדיר שהתיקר שלנו זה New Message. בואו נניח שאנחנו רוצים להציג הודעה חדשה שהתקבלה, אז כל ה-Notification שאנחנו מציגים כרגע מדברת על איזושהי הודעה שהתקבלה באפליקציה שלנו, ואם היוזר רוצה הוא יפתח את ה-Notification ויראה את ההודעה.
אז הדבר הבא שאנחנו רוצים להציג זה את ה-Title של ה-Content. כאשר היוזר פותח את ה-Notification אז הוא רואה למטה את ה-Notification בצורה קצת יותר נרחבת.
זאת אומרת אם היוזר יבצע את הגלילה הזאת אז הוא יראה למטה את הנוטיפיקיישן שלנו ולנוטיפיקיישן יש טייטל ויש תוכן טקסט. אז זה בעצם ההבדל בין תיקר שזה הטקסט למעלה לבין קונטנט שזה מה שרואים כאשר פותחים את הנוטיפיקיישן.
לקונטנט יש גם טייטל בואו נרשום you've got a new message ולקונטנט יש גם טקסט אז הטקסט יהיה click to see the new message והנה הגדרנו גם טקסט בטיקר גם טקסט בקונטנט שמחולק לכותרת ולטקסט עצמו לאחר מכן אנחנו יכולים להציג אייקונים קטנים אז בואו נציג builder.set small icon ו-small icon זה אותו האייקון שמוצג ליד הטיקר אז יש לנו כאן שני אייקונים אחד עבור הטיקר
ואחד עבור הקונטנט. אז בואו ניקח את האייקון של הטיקר r.drawable.ticker.icon ואנחנו יכולים לראות אותו כאן. בדיוק אייקון שמתאים לאיזושהי הודעה שהתקבלה, מעין מעטפה כזאת.
הדבר הבא שאנחנו רוצים להציג בבילדר זה לארג' אייקון. לארג' אייקון זה אותו האייקון שמופיע כאשר היוזר גולל למטה את הנוטיפיקיישן אבל אנחנו לא מקבלים ID של תמונה אלא אנחנו מקבלים ביטמאפ זה מה שהפונקציה set large icon מקבלת היה נוח אם היא הייתה מקבלת פשוט את ה-ID אבל היא מקבלת רק אובייקט
ביטמאפ אז אנחנו צריכים עכשיו להמיר את ה-ID לביטמאפ זה מתבצע על ידי המחלקה ביטמאפ פקטורי נקודה די קוד ריסורס לתת לו את כל הריסורסס על ידי גט ריסורסס ואת האיידי של אותה תמונה ויהיה ארד רובל נקודה קונטנט אייקון והנה התגברנו על הבעיה שהפונקציה סט לארג' אייקון לא קיבלה איידי ספציפי הנה
אנחנו רואים אפילו כאן את האייקון שהולך להיות מוצג כאשר היוזר גולל למטה את הנוטיפיקיישן הדבר הבא שאנחנו רוצים להגדיר לבילדר זה את הפקודה set auto cancel true.
set auto cancel true זאת פקודה שפשוט מגדירה שאם היוזר לוחץ על הנוטיפיקיישן אחרי שהוא ביצע גלילה למטה, לחץ עליה ואז נפתחה אקטיביטי ספציפית באפליקציה, אז אנחנו רוצים שהנוטיפיקיישן תיעלם, אנחנו לא רוצים שהיא תמשיך להישאר שם.
אם היוזר לוחץ על הנוטיפיקיישן ולא נפתחת לו אקטיביטי, אין משמעות לפקודה הזאת. הנוטיפיקיישן תמשיך להיות שם עד שהיוזר לא יחליט להוציא את הנוטיפיקיישן בעצמו.
אבל אם היוזר לוחץ ונפתחת אקטיביטי, set auto cancel true קובע שהנוטיפיקיישן אוטומטית תיעלם, כי הוא פשוט פתח דרכה אקטיביטי. הדבר הבא שאנחנו רוצים לעשות זה לבנות את אובייקט הנוטיפיקיישן.
אז אנחנו רוצים Object Notification שווה בילדר נקודה בילד זה בעצם בונה את אובייקט הנוטיפיקיישן. אז אם אנחנו מסתכלים מה עשינו עד עכשיו בואו נצמצם רגע אנחנו נוכל לראות שכל מה שעשינו כאן זה Create the Notification Object אבל אנחנו רוצים להציג את הנוטיפיקיישן להציג את הנוטיפיקיישן
זה יהיה Notification Manager Compat. From This Notify וזה בעצם מציג את הנוטיפיקיישן שבנינו. Notify מקבלת קוד עבור ההודעה ואת ההודעה עצמה.
בואו נניח שאנחנו נותנים קוד קבוע, נניח את המספר 1 והנה הנוטיפיקיישן עצמה שבנינו. מה מציין הקוד? הקוד מציין האם אנחנו מציגים כרגע את אותה הנוטיפיקציה עם הקוד הזה.
אם הקוד הוא כל פעם שונה, אז מבחינת המערכת זאת תהיה נוטיפיקיישן אחרת. אם זה אותו הקוד, אז זאת אותה נוטיפיקציה.