NCMBのプッシュ通知 (開封率、インクリメント) について (iOS)
開封率
開封状態にするには
- ドキュメント: 開封率
- リファレンス: NCMBAnalytics Class Reference
- ドキュメントやリファレンスをみると
NCMBAnalytics.trackAppOpenedWithLaunchOptions(launchOptions)
またはNCMBAnalytics.trackAppOpenedWithRemoteNotificationPayload(userInfo)
が呼び出されると開封扱いになるようだ launchOptions
がnil
だった場合には開封扱いにはならない- それぞれ
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)
を呼び出すだけでは、アプリ未起動時の開封が取得できなかった) 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になる