[Swift] プッシュ通知を受信したタイミングでバッジの更新を行う

実装 [iOS]

Push通知の登録

application:didFinishLaunchingWithOptions:に


    let userNotificationTypes: UIUserNotificationType = [UIUserNotificationType.Alert, UIUserNotificationType.Badge, UIUserNotificationType.Sound]
    let settings = UIUserNotificationSettings(forTypes: userNotificationTypes, categories: nil)
    application.registerUserNotificationSettings(settings)

BackgroundFetchを有効にする

XCode → Capabilities → BackgroundModes → BackgroundFetch,Remote notifications
の項目にチェックを入れます。

プッシュ通知を受け取ったらバッジを更新

プッシュ通知を受け取ったらバッジを更新するためにはSilent Push Notificationを発行する必要があります。

Silent Push Notificationとは、Payloadに”content-available”のみを送信するプッシュ通知で、これによってBackgroundFetchを発動させることができます。今回はBackgroundFetchによってバッジの更新を行ってみます。

以下のコードをAppDelegate.mに書きます。以下のコードはSilent Push Notificationを受け取った時に呼ばれます。

  func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
       UIApplication.sharedApplication().applicationIconBadgeNumber = UIApplication.sharedApplication().applicationIconBadgeNumber + 1

        completionHandler(.NewData)
    }

実装 [Python]

今回はPyParseを使ってPush通知を送信してみます。

from parse_rest.connection import register
from parse_rest.installation import Push


register(APPLICATION_ID, REST_API_KEY)

channel_name = "some_channel_name"


# PushNotificationを送信
Push.alert({
                'alert': msg,
            }, channels=[channel_name])


# SilentPushNotificationを送信
Push.alert({
    'alert': '',
    'content-available': 1
}, channels=[channel_name])

プッシュ通知がユーザーに届いたタイミングでバッジを更新させるにはプッシュ通知を行った後にSilentPushNotificationを発行すれば、バッジを更新できます。

Related Contents

Pickup Contents