onmyway133 / blog

🍁 What you don't know is what you haven't learned
https://onmyway133.com/
MIT License
669 stars 33 forks source link

How to do implement notification in iOS with Firebase #64

Open onmyway133 opened 6 years ago

onmyway133 commented 6 years ago

Note: This applies to Firebase 4.0.4

Preparing push notification certificate

Go to Member Center -> Certificates -> Production

Certificate

You can now use 1 certificate for both sandbox and production environment push

Auth Key

Configure push notification

firebase

Adding pod

In your Podfile, declare

pod 'Firebase/Core'
pod 'Firebase/Messaging'

Disabling app delegate swizzling

<key>FirebaseAppDelegateProxyEnabled</key>
<false/>

Read more on Messaging.messaging().apnsToken

This property is used to set the APNS Token received by the application delegate. FIRMessaging uses method swizzling to ensure the APNS token is set automatically. However, if you have disabled swizzling by setting FirebaseAppDelegateProxyEnabled to NO in your app's Info.plist, you should manually set the APNS token in your application delegate's -application:didRegisterForRemoteNotificationsWithDeviceToken: method. If you would like to set the type of the APNS token, rather than relying on automatic detection, see: -setAPNSToken:type:.

Configuring Firebase

You can and should configure Firebase in code

import Firebase

let options = FirebaseOptions(googleAppID: "", gcmSenderID: "")
options.bundleID = ""
options.apiKey = ""
options.projectID = ""
options.clientID = ""
FirebaseApp.configure(options: options)

Handling device token

import Firebase

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

Getting FCM token

Retrieving FCM token

Read Access the registration token

By default, the FCM SDK generates a registration token for the client app instance on initial startup of your app. Similar to the APNs device token, this token allows you to target notification messages to this particular instance of the app.

Messaging.messaging().fcmToken

Observing for FCM token change

Read Monitor token generation

Messaging.messaging().delegate = self

// MARK: - MessagingDelegate

func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {
  print(fcmToken)
}
malathiP commented 6 years ago

what is the difference between registration token and device token? which one we need to use to get fcm messages?

malathiP commented 6 years ago

Is there any need of using application server to send message to particular device?