Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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

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

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

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

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

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

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

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

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

צור פרויקט Firebase

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

אנו ממליצים להשתמש CocoaPods להתקין את ספריות Firebase. עם זאת, אם אתה מעדיף לא להשתמש CocoaPods, אתה יכול לשלב את המסגרות SDK ישירות או להשתמש סוויפט Package Manager במקום.

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

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

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

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

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

    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, מזהה פרסום ברמת ההתקן, ב של אפל פרטיות המשתמש ושימוש נתונים ו App מעקב שקיפות ותיעוד.

    Analytics אינו מופעל

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

    pod install
    open your-project.xcworkspace

העלה את מפתח האימות של 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];

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

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

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

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

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

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

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

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

מָהִיר

Messaging.messaging().delegate = self

Objective-C

[FIRMessaging messaging].delegate = self;

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

אסימוני רישום מועברים באמצעות שיטת 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)"
  }
}

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

הצעדים הבאים

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