Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

שלח הודעת בדיקה לאפליקציית iOS ברקע

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

הוסף את Firebase לפרויקט ה- iOS שלך

סעיף זה מכסה משימות שייתכן שהשלמת אם כבר הפעלת תכונות אחרות של Firebase עבור האפליקציה שלך. עבור FCM ספציפית, יהיה עליך להעלות את מפתח האימות של ה- APN שלך ולהירשם להתראות מרחוק .

תנאים מוקדמים

  • התקן את הדברים הבאים:

    • Xcode 12.2 ואילך
    • CocoaPods 1.10.0 ואילך
  • וודא שהפרויקט שלך עומד בדרישות הבאות:

    • על הפרויקט שלך למקד ל- iOS 10 ואילך.
  • הגדר מכשיר iOS פיזי להפעלת האפליקציה שלך והשלם את המשימות הבאות:

    • השג מפתח אימות הודעות דחיפה של Apple עבור חשבון המפתח של Apple .
    • אפשר הודעות דחיפה ב- XCode תחת אפליקציה> יכולות .

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

צור פרויקט Firebase

לפני שתוכל להוסיף את Firebase לאפליקציית iOS שלך, עליך ליצור פרויקט Firebase כדי להתחבר לאפליקציית iOS שלך. בקר ב- Understand Firebase Projects למידע נוסף על פרויקטים של Firebase.

רשום את האפליקציה שלך ב- Firebase

לאחר שיש לך פרויקט Firebase, תוכל להוסיף אליו את אפליקציית iOS שלך.

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

  1. עבור למסוף Firebase .

  2. במרכז עמוד סקירת הפרויקט, לחץ על סמל iOS ( ) כדי להפעיל את זרימת העבודה של ההתקנה.

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

  3. הזן את מזהה החבילה של האפליקציה שלך בשדה מזהה חבילה של iOS .

  4. (אופציונלי) הזן מידע אחר על האפליקציה: כינוי לאפליקציה ומזהה App Store .

  5. לחץ על רשום אפליקציה .

הוסף קובץ תצורה של Firebase

  1. לחץ על הורד את GoogleService-Info.plist כדי להשיג את קובץ התצורה שלך ל- Firebase iOS ( GoogleService-Info.plist ).

  2. העבר את קובץ התצורה שלך לשורש של פרויקט ה- Xcode שלך. אם תתבקש, בחר להוסיף את קובץ התצורה לכל היעדים.

אם יש לך מספר מזהי חבילות בפרויקט שלך, עליך לשייך כל מזהה חבילה לאפליקציה רשומה במסוף Firebase כך שלכל אפליקציה תהיה קובץ GoogleService-Info.plist .

הוסף SDK של Firebase לאפליקציה שלך

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

האם אתה משתמש באחת מדוגמאות ההפעלה המהירה ? פרויקט ה- Xcode ו- Podfile (עם תרמילים) כבר קיימים, אך עדיין תצטרך להוסיף את קובץ התצורה של Firebase ולהתקין את התיקים .

  1. צור קובץ Podfile אם עדיין אין לך:

    cd your-project-directory
    pod init
  2. אל קובץ ה- Podfile שלך, הוסף את תרמילי Firebase שבהם ברצונך להשתמש באפליקציה שלך.

    תוכל להוסיף כל אחד ממוצרי Firebase הנתמכים לאפליקציית iOS שלך.

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

    ניתוח מופעל

    # Add the Firebase pod for Google Analytics
    pod 'Firebase/Analytics'
    
    # For Analytics without IDFA collection capability, use this pod instead
    # pod ‘Firebase/AnalyticsWithoutAdIdSupport’
    
    # Add the pod for Firebase Cloud Messaging
    pod 'Firebase/Messaging'

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

    ניתוח לא מופעל

    # Add the pod for Firebase Cloud Messaging
    pod 'Firebase/Messaging'
  3. התקן את התרמילים ופתח את קובץ ה- .xcworkspace שלך כדי לראות את הפרויקט ב- Xcode:

    pod install
    open your-project.xcworkspace

העלה את מפתח האימות של ה- APN שלך

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

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

  2. במפתח האימות של APN תחת תצורת אפליקציית iOS , לחץ על כפתור העלה .

  3. דפדף למיקום בו שמרת את המפתח שלך, בחר אותו ולחץ על פתח . הוסף את מזהה המפתח עבור המפתח (זמין במרכז החברים של Apple Developer ) ולחץ על העלה .

אתחל את Firebase באפליקציה שלך

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

  1. ייבא את מודול Firebase ל- UIApplicationDelegate שלך:

    מָהִיר

    import Firebase

    מטרה-ג

    @import Firebase;
  2. הגדר תצורה משותפת של FirebaseApp , בדרך כלל ביישום האפליקציה שלך application:didFinishLaunchingWithOptions: method:

    מָהִיר

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    מטרה-ג

    // Use Firebase library to configure APIs
    [FIRApp configure];

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

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

מָהִיר

if #available(iOS 10.0, *) {
  // For iOS 10 display notification (sent via APNS)
  UNUserNotificationCenter.current().delegate = self

  let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
  UNUserNotificationCenter.current().requestAuthorization(
    options: authOptions,
    completionHandler: {_, _ in })
} else {
  let settings: UIUserNotificationSettings =
  UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
  application.registerUserNotificationSettings(settings)
}

application.registerForRemoteNotifications()

מטרה-ג

if ([UNUserNotificationCenter class] != nil) {
  // iOS 10 or later
  // For iOS 10 display notification (sent via APNS)
  [UNUserNotificationCenter currentNotificationCenter].delegate = self;
  UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert |
      UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
  [[UNUserNotificationCenter currentNotificationCenter]
      requestAuthorizationWithOptions:authOptions
      completionHandler:^(BOOL granted, NSError * _Nullable error) {
        // ...
      }];
} else {
  // iOS 10 notifications aren't available; fall back to iOS 8-9 notifications.
  UIUserNotificationType allNotificationTypes =
  (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge);
  UIUserNotificationSettings *settings =
  [UIUserNotificationSettings settingsForTypes:allNotificationTypes categories:nil];
  [application registerUserNotificationSettings:settings];
}

[application registerForRemoteNotifications];

גשו לאסימון ההרשמה

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

כברירת מחדל, ה- FCM SDK מייצר אסימון רישום עבור מופע אפליקציית הלקוח בהשקת האפליקציה. בדומה לאסימון מכשיר ה- APN, אסימון זה מאפשר לך לשלוח התראות ממוקדות לכל מופע מסוים של האפליקציה שלך.

באותו אופן שבו iOS בדרך כלל מספק אסימון מכשיר APN בהתחלת האפליקציה, FCM מספק אסימון הרשמה באמצעות FIRMessagingDelegate של messaging:didReceiveRegistrationToken: שיטה. ה- FCM SDK מאחזר אסימון חדש או קיים במהלך השקת האפליקציה הראשונית ובכל פעם שהאסימון מתעדכן או מבוטל. בכל המקרים, ה- FCM SDK מכנה messaging:didReceiveRegistrationToken: עם אסימון חוקי.

אסימון ההרשמה עשוי להשתנות כאשר:

  • האפליקציה משוחזרת במכשיר חדש
  • המשתמש מסיר / מתקין את האפליקציה מחדש
  • המשתמש מנקה את נתוני האפליקציה.

הגדר את נציג ההודעות

כדי לקבל אסימונים לרישום, FIRMessaging פרוטוקול הנציג להעברת הודעות והגדר את מאפיין delegate של FIRMessaging לאחר התקשרות [FIRApp configure] . לדוגמה, אם נציג היישום שלך תואם את פרוטוקול נציג ההודעות, אתה יכול להגדיר את הנציג על application:didFinishLaunchingWithOptions: לעצמו.

מָהִיר

Messaging.messaging().delegate = self

מטרה-ג

[FIRMessaging messaging].delegate = self;

מביא את אסימון הרישום הנוכחי

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

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

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

מָהִיר

Messaging.messaging().token { token, error in
  if let error = error {
    print("Error fetching FCM registration token: \(error)")
  } else if let token = token {
    print("FCM registration token: \(token)")
    self.fcmRegTokenMessage.text  = "Remote FCM registration token: \(token)"
  }
}

מטרה-ג

[[FIRMessaging messaging] tokenWithCompletion:^(NSString *token, NSError *error) {
  if (error != nil) {
    NSLog(@"Error getting FCM registration token: %@", error);
  } else {
    NSLog(@"FCM registration token: %@", token);
    self.fcmRegTokenMessage.text = token;
  }
}];

אתה יכול להשתמש בשיטה זו בכל עת כדי לגשת לאסימון במקום לאחסן אותו.

צג רענון אסימונים

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

מָהִיר

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
  print("Firebase registration token: \(String(describing: fcmToken))")

  let dataDict:[String: String] = ["token": fcmToken ?? ""]
  NotificationCenter.default.post(name: Notification.Name("FCMToken"), object: nil, userInfo: dataDict)
  // TODO: If necessary send token to application server.
  // Note: This callback is fired at each app startup and whenever a new token is generated.
}

מטרה-ג

- (void)messaging:(FIRMessaging *)messaging didReceiveRegistrationToken:(NSString *)fcmToken {
    NSLog(@"FCM registration token: %@", fcmToken);
    // Notify about received token.
    NSDictionary *dataDict = [NSDictionary dictionaryWithObject:fcmToken forKey:@"token"];
    [[NSNotificationCenter defaultCenter] postNotificationName:
     @"FCMToken" object:nil userInfo:dataDict];
    // TODO: If necessary send token to application server.
    // Note: This callback is fired at each app startup and whenever a new token is generated.
}

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

שלח הודעת הודעה

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

  2. וודא שהאפליקציה נמצאת ברקע במכשיר.

  3. פתח את מלחין ההודעות ובחר התראה חדשה .

  4. הזן את טקסט ההודעה.

  5. בחר שלח הודעת בדיקה .

  6. בשדה שכותרתו הוסף אסימון רישום FCM , הזן את אסימון ההרשמה שקיבלת בחלק הקודם של מדריך זה.

  7. לחץ על בדוק

לאחר שתלחץ על בדיקה , מכשיר הלקוח הממוקד (עם האפליקציה ברקע) אמור לקבל את ההודעה במרכז ההודעות.

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

הצעדים הבאים

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