Implement push notifications
To implement push notifications in our app we need to create a .p8 key file from developer.apple.com and setup the settings for the notification in the dashboard.
We also need to create a provisioning profile for the app because push notifications don't work with a wildcard provisioning profile.
In the MBurger dashboard under Settings > Info & Features you can see two fields that you will need to setup your app to receive push notifications from MBurger:
Push token
Project topic for push
The first one identifies your MBurger project and will be used to setup the service in your didFinishLaunchingWithOptions
, the second one will be used to register the token of your device once you obtain one from APNS
.
Add this to your AppDelegate:
import UserNotifications
...
func application(_ application: UIApplication,
didFinishLaunchingWithOptions
launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
MBManager.shared().pushToken = “YOUR_TOKEN”
…
let userNotificationCenter = UNUserNotificationCenter.current()
userNotificationCenter.delegate = self
registerForPushNotifications()
}
...
// MARK: – Notifications
func registerForPushNotifications() {
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { (granted, _) in
guard granted else { return }
self.getNotificationSettings()
}
}
func getNotificationSettings() {
UNUserNotificationCenter.current().getNotificationSettings { (settings) in
guard settings.authorizationStatus == .authorized else { return }
DispatchQueue.main.async {
UIApplication.shared.registerForRemoteNotifications()
}
}
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
MumblePush.registerDevice(deviceToken: deviceToken, success: {
let topics = [“TOPIC_ID”]
MumblePush.register(toTopics: topics)
})
}
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
print(“Failed to register: \(error)“)
}
extension AppDelegate: UNUserNotificationCenterDelegate {
func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler
completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler(UNNotificationPresentationOptions.alert)
}
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler
completionHandler: @escaping () -> Void) {
completionHandler()
}
}
If you want more information about how push notifications work on iOS, visit the Apple official guide.
Last updated
Was this helpful?