Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

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

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

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

דרישות מוקדמות

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

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

    • על הפרויקט שלך למקד לגרסאות הפלטפורמה האלה או מאוחרות יותר:
      • iOS 10
      • macOS 10.12
      • tvOS 12
      • watchOS 6
  • הגדרת מכשיר אפל פיזי מנת להריץ את האפליקציה שלך, ולהשלים את המשימות הבאות:

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

צור פרויקט Firebase

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

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

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

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

  1. עבור אל קונסולת Firebase .

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

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

  3. זן זיהוי החבילה של האפליקציה שלך בתחום זיהוי החבילה.

  4. (אופציונאלי) זן פרטי אפליקציה אחרים: כינוי App ו- App Store ID.

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

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

  1. לחץ להורדה GoogleService-info.plist להשיג קובץ config פלטפורמות Firebase האפל שלך ( GoogleService-Info.plist ).

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

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

הוסף ערכות SDK של Firebase לאפליקציה שלך

השתמש ב-Swift Package Manager כדי להתקין ולנהל תלות ב-Firebase.

  1. בשנת Xcode, עם פרויקט היישום שלך פתוח, נווט אל קובץ> חבילות סוויפט> הוסף תלות חבילת.
  2. כאשר תתבקש, הוסף את מאגר Firebase Apple platforms SDK:
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. בחר את ספריית Firebase Cloud Messaging.
  5. לקבלת חווית שימוש אופטימלית עם Firebase Cloud Messaging, אנו ממליצים לאפשר ל- Google Analytics בפרויקט Firebase שלך והוספת SDK Firebase עבור Google Analytics באפליקציה. אתה יכול לבחור בספרייה ללא אוסף IDFA או עם אוסף IDFA.
  6. בסיום, Xcode יתחיל באופן אוטומטי לפתור ולהוריד את התלות שלך ברקע.

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

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

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

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

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

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

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

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

    מָהִיר

    import Firebase

    Objective-C

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

    מָהִיר

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

    Objective-C

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

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

או בעת ההפעלה, או בנקודה הרצויה בזרימת היישום שלך, רשום את האפליקציה שלך לקבלת התראות מרחוק. התקשר 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()

Objective-C

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];

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

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

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

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

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

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

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

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

מָהִיר

Messaging.messaging().delegate = self

Objective-C

[FIRMessaging messaging].delegate = self;

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

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

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

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

מָהִיר

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)"
  }
}

Objective-C

[[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.
}

Objective-C

- (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 מרכז השליטה של דיווח , אשר מתעדת את מספר ההודעות שנשלחו ופתח גם במכשירי Apple ו- Android, יחד עם נתונים עבור "הופעות" (הודעות נתפס על ידי משתמשים) עבור אפליקציות אנדרואיד.

הצעדים הבאים

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