##サイレントプッシュとは##
PUSH通知が来た際にアラートを表示しないやり方です。
アプリ内のコンテンツを任意のタイミングで更新したい時などに使えます。
アラートを表示しないため通知の許可画面が必要ありません。
##リモート通知の仕組み##
iOSではApple Push Notification service(APNs)を経由しなければなりません。
送信元サーバー→APNs→各デバイスという流れで通知されます。
##証明書の取得##
Appleの開発者サイトから証明書を取得する必要があります。
詳細はこちらをご確認ください。
##ニフティクラウドで設定##
新しいアプリの作成
ニフティクラウドダッシュボード上部にある新しいアプリよりアプリを作成します。
通知の許可、証明書のアップロード
プッシュ通知の許可と、さきほど取得した証明書のアップロードをします。
詳細はこちらをご確認ください。
##Xcodeに実装##
SDKのインストール
下記のようなPodfileでインストールできます。
pod 'NCMB', :git => 'https://github.com/NIFTYCloud-mbaas/ncmb_ios.git'
APIキーの設定
アプリ設定→アプリ基本→APIキーにあるアプリケーションキーとクライアントキーを設定します。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
NCMB.setApplicationKey("アプリケーションキー", clientKey: "クライアントキー")
UIApplication.sharedApplication().registerForRemoteNotifications()
return true
}
デバイストークン(通知するデバイスの情報)の登録
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
let installation = NCMBInstallation.currentInstallation()
installation.setDeviceTokenFromData(deviceToken)
installation.saveInBackgroundWithBlock { (error) in
if error == nil {
print("デバイストークン登録成功")
}else {
print("デバイストークン登録失敗")
}
}
}
リモートプッシュを通知
コンテンツの更新処理などをここに書きます。
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
//コンテンツ更新などの何かしらの処理
if let controller = window?.rootViewController as? ViewController {
controller.lblDisplay.text = "Silent Push成功"
}
}
バックグラウンド中も通知
CapabilitiesのBackground modesをONにして
Remote Notificationを有効化します。
##プッシュ通知##
ニフティクラウドダッシュボードのプッシュ通知→新しいプッシュ通知を選択します。
- iOS端末に配信するをチェック
- 音声ファイル名を空白
- content-availableを有効にする
- プッシュ通知を作成するを選択


iOSデバイスで通知できたら成功です。少し時間がかかります。
プッシュ通知に成功するとニフティクラウドダッシュボードは下記のようになります。
##最後に##
許可画面不要で任意のタイミングでコンテンツの更新ができるのは結構使えるかと思います。
実装もそこまで難しくありません。
ネックなのは1か月でプッシュできる回数が決まっていることです。
無料では100万回までとなっています。
例えば1回のプッシュで10万デバイスに通知すると、残り100万-10万=90万デバイスとなります。
コードをGitHubで公開しておりますのでよろしければ参考にしてください。