הגדר אפליקציית לקוח העברת מסרים של Firebase ב- iOS

עבור אפליקציות לקוח iOS, אתה יכול לקבל הודעות וטעינה של נתונים עד 4000 בתים על ממשק ה- APN של Firebase Cloud Messaging.

כדי לכתוב קוד הלקוח שלך Objective-C או סוויפט, אנו ממליצים להשתמש ב- API FIRMessaging . למשל QuickStart מספק דוגמת קוד עבור שתי השפות.

כדי לאפשר שליחת הודעות דחיפה באמצעות APN, אתה צריך:

  • מפתח אימות הודעות Push Push עבור חשבון המפתח שלך ב- Apple. Firebase Cloud Messaging משתמש באסימון זה כדי לשלוח הודעות דחיפה ליישום המזוהה על ידי מזהה האפליקציה.

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

אתה יוצר הוא למפתחים אפל חבר המרכז .

שיטה מסחררת בהודעות ענן של Firebase

Swizzling השיטה מבצעת FCM SDK בשני תחומים מרכזיים: מיפוי ה- APN שלך אסימון לרישום FCM אסימון לכיד נתונים ניתוח במהלך טיפול התקשרות הודעה במורד זרם . מפתחים המעדיפים שלא swizzling השימוש יכול להשבית אותו על ידי הוספת דגל FirebaseAppDelegateProxyEnabled בקובץ info.plist של היישום וקביעת אותו NO (ערך בוליאני). אזורים רלוונטיים במדריכים מספקים דוגמאות לקוד, הן עם והן בלי אפשרות לסחרור שיטות.

הוסף 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()

    אובייקטיבי-ג

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

סחרור מושבת: מיפוי אסימון ה- APN שלך ואסימון ההרשמה

אם השבתת שיטות סחרור, יהיה עליך למפות במפורש את אסימון ה- APN שלך לאסימון הרישום של FCM. דרוס את שיטות didRegisterForRemoteNotificationsWithDeviceToken כדי לאחזר את ה- APN אסימון, ולאחר מכן להגדיר FIRMessaging של APNSToken רכוש:

מָהִיר

func application(application: UIApplication,
                 didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
  Messaging.messaging().apnsToken = deviceToken
}

אובייקטיבי-ג

// With "FirebaseAppDelegateProxyEnabled": NO
- (void)application:(UIApplication *)application
    didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    [FIRMessaging messaging].APNSToken = deviceToken;
}

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

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

כאשר נוצר אסימון רישום FCM, הספרייה מעלה את המזהה ונתוני התצורה ל- Firebase. אם ברצונך לקבל הסכמה מפורשת ממשתמשים תחילה, תוכל למנוע יצירת אסימונים בזמן ההגדרה על ידי השבתת FCM. כדי לעשות זאת, להוסיף ערך metadata כדי שלך Info.plist (לא שלך GoogleService-Info.plist ):

FirebaseMessagingAutoInitEnabled = NO

כדי להפעיל מחדש את FCM, תוכל לבצע שיחת זמן ריצה:

מָהִיר

Messaging.messaging().autoInitEnabled = true

Objective-C

[FIRMessaging messaging].autoInitEnabled = YES;

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

הצעדים הבאים

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