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

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

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

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

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

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

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

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

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

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

צור פרויקט Firebase

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

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

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

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

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

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

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

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

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

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

  1. לחץ על הורד את GoogleService-Info.plist כדי להשיג את קובץ התצורה של Firebase Apple platforms שלך ( 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.git
  4. בחר את ספריית Firebase Cloud Messaging.
  5. הוסף את הדגל -ObjC לקטע Other Linker Flags של הגדרות הבנייה של היעד שלך.
  6. לחוויה אופטימלית עם Firebase Cloud Messaging, אנו ממליצים להפעיל את Google Analytics בפרויקט Firebase שלך ​​ולהוסיף את Firebase SDK עבור Google Analytics לאפליקציה שלך. אתה יכול לבחור בספרייה ללא אוסף IDFA או עם אוסף IDFA.
  7. בסיום, Xcode יתחיל באופן אוטומטי לפתור ולהוריד את התלות שלך ברקע.

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

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

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

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

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

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

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

  1. ייבא את מודול FirebaseCore ב- UIApplicationDelegate שלך, כמו גם כל מודולי Firebase אחרים שנציג האפליקציה שלך משתמש בו. לדוגמה, כדי להשתמש ב-Cloud Firestore ובאימות:

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    מָהִיר

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. הגדר מופע משותף FirebaseApp בשיטת application(_:didFinishLaunchingWithOptions:) של נציג האפליקציה שלך:

    SwiftUI

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

    מָהִיר

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. אם אתה משתמש ב- SwiftUI, עליך ליצור נציג יישום ולצרף אותו למבנה App שלך באמצעות UIApplicationDelegateAdaptor או NSApplicationDelegateAdaptor . עליך גם להשבית את העברת נציגי האפליקציה. למידע נוסף, עיין בהוראות של SwiftUI .

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          

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

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

מָהִיר


UNUserNotificationCenter.current().delegate = self

let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(
  options: authOptions,
  completionHandler: { _, _ in }
)

application.registerForRemoteNotifications()

Objective-C


[UNUserNotificationCenter currentNotificationCenter].delegate = self;
UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert |
    UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
[[UNUserNotificationCenter currentNotificationCenter]
    requestAuthorizationWithOptions:authOptions
    completionHandler:^(BOOL granted, NSError * _Nullable error) {
      // ...
    }];

[application registerForRemoteNotifications];

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

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

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

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

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

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

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

כדי לקבל אסימוני רישום, יישם את פרוטוקול נציג ההודעות והגדר את מאפיין delegate של FIRMessaging לאחר קריאה ל- [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. במסוף Firebase, פתח את דף ההודעות .

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

    1. בחר הודעות Firebase Notification ובחר צור .
  5. אחרת, בכרטיסייה מסעות פרסום , בחר מסע פרסום חדש ולאחר מכן הודעות .

  6. הזן את טקסט ההודעה. כל שאר השדות הם אופציונליים.

  7. בחר שלח הודעת בדיקה מהחלונית הימנית.

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

  9. בחר בדיקה .

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

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

הצעדים הבאים

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