Developer Docs | Kommunicate

Developer Docs | Kommunicate

  • Docs

›iOS

Web

  • Installation
  • CMS Installation
  • Authentication
  • Conversation
  • Conversation Assignment
  • Customization
  • Localization
  • Logout
  • Troubleshooting

Android

  • Installation
  • Authentication
  • Push Notification
  • Conversation
  • Customization
  • Localization
  • Logout

iOS

  • Installation
  • Authentication
  • Push Notification
  • Conversation
  • Customization
  • Localization
  • Logout
  • Troubleshooting

React Native

  • Installation
  • Authentication
  • Push Notification
  • Conversation
  • Customization
  • Logout

Flutter

  • Installation
  • Authentication
  • Customization
  • Conversation
  • Push Notification

Ionic/Cordova/Phonegap

  • Installation
  • Authentication
  • Push Notification
  • Conversation
  • Customization
  • Localization
  • Logout
  • Resolving Errors

Rich Messages

  • How To Use
  • Types of Rich Messages

Bots

  • Bot setup
  • Dialogflow Integration
  • Lex Integration
  • Kompose Bot Builder
  • Custom Bot Integration
  • Import Kompose Bot
  • Bot Samples

Integrations

  • Zapier

Platform APIs

  • Authentication
  • Endpoints

Dashboard Features

  • Analytics

Configuration

  • Email Fallback
  • Webhooks
  • Access Token URL

Push Notification

Push Notification Setup

Add import statement in AppDelegate file to access the methods

import Kommunicate

a) Send device token to Kommunicate server:

In your AppDelegate’s didRegisterForRemoteNotificationsWithDeviceToken method send device token registration to Kommunicate server after you get deviceToken from APNS. Sample code is as below:

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
{

    print("DEVICE_TOKEN_DATA :: \(deviceToken.description)")  // (SWIFT = 3) : TOKEN PARSING

    var deviceTokenString: String = ""
    for i in 0..<deviceToken.count
    {
        deviceTokenString += String(format: "%02.2hhx", deviceToken[i] as CVarArg)
    }
    print("DEVICE_TOKEN_STRING :: \(deviceTokenString)")

    if (KMUserDefaultHandler.getApnDeviceToken() != deviceTokenString)
    {
        let kmRegisterUserClientService: KMRegisterUserClientService = KMRegisterUserClientService()
        kmRegisterUserClientService.updateApnDeviceToken(withCompletion: deviceTokenString, withCompletion: { (response, error) in
            print ("REGISTRATION_RESPONSE :: \(String(describing: response))")
        })
    }
}

b) Receiving push notification:

Once your app receives notification, pass it to Kommunicate handler for chat notification processing.

Add the following code in AppDelegate class, this function will be called after the app launch to register for push notifications.

func registerForNotification() {
    UNUserNotificationCenter.current().requestAuthorization(options:[.badge, .alert, .sound]) { (granted, error) in
        if granted {
            DispatchQueue.main.async {
                UIApplication.shared.registerForRemoteNotifications()
            }
        }
    }
}

/// Add below lines inside didFinishLaunchingWithOptions method

    UNUserNotificationCenter.current().delegate = self
    registerForNotification()

    KMPushNotificationHandler.shared.dataConnectionNotificationHandlerWith(Kommunicate.defaultConfiguration, Kommunicate.kmConversationViewConfiguration)
    let kmApplocalNotificationHandler: KMAppLocalNotification =  KMAppLocalNotification.appLocalNotificationHandler()
    kmApplocalNotificationHandler.dataConnectionNotificationHandler()

c) Handling app launch on notification click:

Add the following code anywhere inside the AppDelegate class, refer to this sample for the better understanding.

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
    let service = KMPushNotificationService()
    let dict = notification.request.content.userInfo
    guard !service.isKommunicateNotification(dict) else {
        service.processPushNotification(dict, appState: UIApplication.shared.applicationState)
        completionHandler([])
        return
    }
    completionHandler([.sound, .badge, .alert])
}

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
    let service = KMPushNotificationService()
    let dict = response.notification.request.content.userInfo
    if service.isApplozicNotification(dict) {
        service.processPushNotification(dict, appState: UIApplication.shared.applicationState)
    }
    completionHandler()
}

d) AppDelegate changes for foreground notification:

The following functions will be called by AppDelegate when the app comes to foreground(active) mode, add this anywhere inside the AppDelegate class.

An optional step that is only required if you want to reset the app icon badge count after a user opens the app.

func applicationWillEnterForeground(_ application: UIApplication) {
    print("APP_ENTER_IN_FOREGROUND")
    UIApplication.shared.applicationIconBadgeNumber = 0
}

e) Save Context when app terminates:

 func applicationWillTerminate(application: UIApplication) {
     KMDBHandler.sharedInstance().saveContext()
 }

You can check the sample AppDelegate file here.

Certificates

a) Upload development and distribution APNs certificates

Upload development and distribution APNs certificates on Kommunicate dashboard, this will allow Kommunicate to send the notification for new messages to your mobile app.

APNS_Upload_Certificate.png

b) Updating Capabilities

Post setting up APNs, the next step is to enable “Push Notifications” and “Background Modes” within your project.

  1. Click on your project, select it from TARGETS.

  2. Next select ‘Signing & Capabilities’ section.

    • Click on “+Capability”

    • Search and select “Push Notifications”

    • Click on “+Capability” again

    • Search and select “Background Modes”

Enable “Background Fetch” and “Remote notifications” under “Background Modes” list

Following screenshot would be of help.

pushnotification_capabilities

← AuthenticationConversation →
  • Push Notification Setup
    • a) Send device token to Kommunicate server:
    • b) Receiving push notification:
    • c) Handling app launch on notification click:
    • d) AppDelegate changes for foreground notification:
    • e) Save Context when app terminates:
  • Certificates
Facebook Open Source

710 East Wing Street,
Arlington Heights, IL 60004,

(+1) (310) 909-7458
hello@kommunicate.io

Docs
WebAndroidiOSIonic/PhonegapReact NativeFlutter
Product
Pricing and FAQsRequest Demo
Social
FacebookTwitterLinkedin
Copyright © 2021 Kommunicate.io.