NCMBのプッシュ通知 (開封率、インクリメント) について (iOS)

開封率

開封状態にするには

  • ドキュメント: 開封率
  • リファレンス: NCMBAnalytics Class Reference
  • ドキュメントやリファレンスをみるとNCMBAnalytics.trackAppOpenedWithLaunchOptions(launchOptions)またはNCMBAnalytics.trackAppOpenedWithRemoteNotificationPayload(userInfo)が呼び出されると開封扱いになるようだ
  • launchOptionsnilだった場合には開封扱いにはならない
  • それぞれapplication(_:didFinishLaunchingWithOptions:)application(_didReceiveNotification:)内にて呼び出すこととなっている
  • 以前の記事では以下のように実装していたが、
func application(application: UIApplication, didReceiveRemoteNotification userInfo:[NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void){
        
    // 以下の行を追加
    if application.applicationState == .Active {
        NCMBAnalytics.trackAppOpenedWithRemoteNotificationPayload(userInfo)
    }
}
  • Background Modes > Remote notificationsの利用がなければ、メソッドはapplication(_didReceiveNotification:)が呼ばれる
  • さらに上記ではapplication.applicationState == .Activeとの条件をいれていたので、.Inactive.Backgroundが呼ばれた時に開封が取得出来ていなかった
  • こちらの記事を参考にすると、application(_didReceiveNotification:)は、必ず呼ばれるとなっているが、アプリが未起動の場合は呼ばれないような気がした (application(_didReceiveNotification:)NCMBAnalytics.trackAppOpenedWithRemoteNotificationPayload(userInfo)を呼び出すだけでは、アプリ未起動時の開封が取得できなかった)
  • [ObjC] AppDelegate 通知分岐処理テンプレート

  • Background Modes > Remote notificationsがオンの場合は、application(_didReceiveNotification:fetchCompletionHandler:)が呼び出されるようだ

  • この場合は、アプリ未起動時にも呼ばれているようだった (application(_:didFinishLaunchingWithOptions:)内のNCMBAnalytics.trackAppOpenedWithLaunchOptions(launchOptions)も呼びだされて開封率200%になった)
  • Background Modes > Remote notificationsは、Silent Remote Push Notificationなどに使える
  • NCMBから使う場合はcontent-availableを有効にしてプッシュを送る
  • mBaaSからSilent Remote Push Notificationを送ってみよう

インクリメント

バッジをインクリメントする

  • バッジ件数 > インクリメントするにするとデータストア上のbadgeに+1された数値がバッジに表示される(通知を受信するとbadge数があがる)

インクリメントがリセットされるとき

  • バッジ件数 > インクリメントするにした通知を開封すると、badgeが0になる