این شروع سریع نحوه راهاندازی Firebase Cloud Messaging را در برنامههای تلفن همراه و کلاینت وب خود توضیح میدهد تا بتوانید به طور قابل اعتماد پیام ارسال کنید. برای محیط های سرور، محیط سرور شما و FCM را ببینید.
برای برنامه های Client Apple ، می توانید بارهای اعلان و داده های داده را تا 4096 بایت از طریق رابط APNS Firebase Cloud Messaging دریافت کنید.
برای نوشتن کد مشتری خود در Objective-C یا Swift ، توصیه می کنیم از API Firmessaging استفاده کنید. مثال QuickStart کد نمونه را برای هر دو زبان ارائه می دهد.
قبل از شروع کار ، Firebase را به پروژه اپل خود اضافه کنید .
FCM SDK در دو حوزه کلیدی روش را انجام می دهد: نقشه برداری از نشانه های APNS خود را به نشانه ثبت نام FCM و ضبط داده های تحلیلی در هنگام رسیدگی به تماس پیام در پایین دست . توسعه دهندگان که ترجیح می دهند از swizzling استفاده نکنند ، می توانند با افزودن پرچم FirebaseAppDelegateProxyEnabled
در پرونده info.plist برنامه و تنظیم آن بر روی NO (مقدار بولی) آن را غیرفعال کنند. زمینه های مربوط به راهنماها نمونه های کد را ارائه می دهند ، چه با و بدون روش Swizzling.
کلید احراز هویت APN خود را در Firebase بارگذاری کنید. اگر قبلاً کلید احراز هویت APNS ندارید ، حتماً یکی از آنها را در مرکز عضو توسعه دهنده اپل ایجاد کنید.
در داخل پروژه خود در کنسول Firebase ، نماد Gear را انتخاب کنید ، تنظیمات پروژه را انتخاب کنید و سپس برگه Cloud Messaging را انتخاب کنید.
در کلید تأیید هویت APNS تحت پیکربندی برنامه iOS ، روی دکمه بارگذاری کلیک کنید تا کلید احراز هویت توسعه یا کلید احراز هویت تولید یا هر دو را بارگذاری کنید. حداقل یک مورد لازم است.
به مکانی که کلید خود را ذخیره کرده اید ، آن را انتخاب کرده و روی Open کلیک کنید. شناسه کلید را برای کلید (موجود در مرکز عضو توسعه دهنده اپل ) اضافه کنید و روی بارگذاری کلیک کنید.
registerForRemoteNotifications
تماس بگیرید:UNUserNotificationCenter.current().delegate = self let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] UNUserNotificationCenter.current().requestAuthorization( options: authOptions, completionHandler: { _, _ in } ) application.registerForRemoteNotifications()
[UNUserNotificationCenter currentNotificationCenter].delegate = self; UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge; [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:authOptions completionHandler:^(BOOL granted, NSError * _Nullable error) { // ... }]; [application registerForRemoteNotifications];
به طور پیش فرض ، FCM SDK یک نشانه ثبت نام برای نمونه برنامه مشتری در راه اندازی برنامه ایجاد می کند. مشابه با نشانه دستگاه APNS ، این نشانه به شما امکان می دهد تا اعلان های هدفمند را به هر نمونه خاصی از برنامه خود ارسال کنید.
به همان روشی که سیستم عامل های اپل به طور معمول یک توکن دستگاه APNS را در شروع برنامه ارائه می دهند ، FCM یک نشانه ثبت نام را از طریق پیام رسانی FIRMessagingDelegate
ارائه می دهد messaging:didReceiveRegistrationToken:
روش. FCM SDK در هنگام راه اندازی برنامه اولیه و هر زمان که نشانه به روز یا باطل شود ، یک نشانه جدید یا موجود را بازیابی می کند. در همه موارد ، FCM SDK messaging:didReceiveRegistrationToken:
با یک نشانه معتبر.
نشانه ثبت نام ممکن است تغییر کند وقتی:
- این برنامه بر روی یک دستگاه جدید ترمیم می شود
- کاربر برنامه را حذف و نصب مجدد برنامه
- کاربر داده های برنامه را پاک می کند.
برای دریافت نشانه های ثبت نام ، پروتکل نماینده پیام رسانی را اجرا کرده و پس از تماس با [FIRApp configure]
دارایی delegate
FIRMessaging
تنظیم کنید. به عنوان مثال ، اگر نماینده برنامه شما با پروتکل نماینده پیام رسانی مطابقت دارد ، می توانید نماینده را در application:didFinishLaunchingWithOptions:
به خودی خود.
Messaging.messaging().delegate = self
[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)" } }
[[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
گوش دهید. خاصیت توکن همیشه ارزش توکن فعلی را دارد.
اگر روش غیرفعال را Swizzling دارید ، یا در حال ساختن یک برنامه Swiftui هستید ، باید صریحاً نقشه های APNS خود را به نشانه ثبت FCM نقشه برداری کنید. application(_:didRegisterForRemoteNotificationsWithDeviceToken:)
روش بازیابی نشانه APNS ، و سپس تنظیم ویژگی apnsToken
Messaging
:
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 ، می توانید با استفاده از همان روش هایی که با فعال کردن Swizzling فعال شده ، به آن دسترسی پیدا کرده و به وقایع تازه کردن گوش دهید.
هنگامی که یک نشانه ثبت نام FCM ایجاد می شود ، کتابخانه داده های شناسه و پیکربندی را در Firebase بارگذاری می کند. اگر می خواهید ابتدا یک انتخاب صریح از کاربران دریافت کنید ، می توانید با غیرفعال کردن FCM از تولید توکن در زمان پیکربندی جلوگیری کنید. برای انجام این کار ، یک مقدار ابرداده به Info.plist
خود اضافه GoogleService-Info.plist
FirebaseMessagingAutoInitEnabled = NO
برای ورود مجدد FCM ، می توانید یک تماس با زمان اجرا کنید:
Messaging.messaging().autoInitEnabled = true
[FIRMessaging messaging].autoInitEnabled = YES;
این مقدار در سراسر برنامه مجدداً تنظیم می شود.
برای ارسال اعلان هایی که شامل تصاویر به دستگاه های اپل است ، باید یک سرویس اعلان را اضافه کنید. این برنامه افزودنی به دستگاه ها اجازه می دهد تا تصاویر تحویل داده شده در بار اعلان را نمایش دهند. اگر قصد ارسال تصاویر را در اعلان ها ندارید ، می توانید از این مرحله پرش کنید.
برای افزودن یک برنامه افزودنی سرویس، وظایف راهاندازی لازم را برای اصلاح و ارائه اعلانها در APNها انجام دهید و سپس API کمکی برنامه افزودنی FCM را در NotificationService.m
اضافه کنید. به طور خاص ، به جای تکمیل پاسخ به تماس با self.contentHandler(self.bestAttemptContent);
، آن را با FIRMessaging extensionHelper
تکمیل کنید، همانطور که نشان داده شده است:
@interface NotificationService () <NSURLSessionDelegate>
@property(nonatomic) void (^contentHandler)(UNNotificationContent *contentToDeliver);
@property(nonatomic) UNMutableNotificationContent *bestAttemptContent;
@end
@implementation NotificationService
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
self.contentHandler = contentHandler;
self.bestAttemptContent = [request.content mutableCopy];
// Modify the notification content here as you want
self.bestAttemptContent.title = [NSString stringWithFormat:@"%@ [modified]",
self.bestAttemptContent.title];
// Call FIRMessaging extension helper API.
[[FIRMessaging extensionHelper] populateNotificationContent:self.bestAttemptContent
withContentHandler:contentHandler];
}
...
- برنامه را روی دستگاه هدف نصب و اجرا کنید. در دستگاه های اپل ، درخواست مجوز دریافت اعلان های از راه دور را بپذیرید.
- بررسی کنید که برنامه در پس زمینه دستگاه قرار دارد.
- در کنسول Firebase ، صفحه پیام رسانی را باز کنید.
- اگر این اولین پیام شماست ، اولین کمپین خود را ایجاد کنید .
- پیام های اعلان Firebase را انتخاب کرده و ایجاد را انتخاب کنید.
- در غیر این صورت ، در برگه کمپین ها ، کمپین جدید و سپس اعلان ها را انتخاب کنید.
- متن پیام را وارد کنید.
- ارسال پیام تست را از صفحه سمت راست انتخاب کنید.
- در قسمت دارای برچسب اضافه کردن یک نشانه ثبت نام FCM ، نشانه ثبت نام خود را وارد کنید.
- تست را انتخاب کنید.
پس از انتخاب تست ، دستگاه مشتری هدفمند ، با برنامه در پس زمینه ، باید اعلان را دریافت کند.
برای بینش در مورد ارسال پیام به برنامه خود ، به داشبورد گزارش FCM مراجعه کنید ، که تعداد پیام های ارسال شده و باز شده در دستگاه های اپل و اندرویدی را ثبت می کند.
پس از اتمام مراحل تنظیم ، در اینجا چند گزینه برای پیشبرد FCM برای سیستم عامل های اپل وجود دارد: