ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

Swift SDKでプッシュ通知を送ってみよう

f:id:mbaasdevrel:20191001174809p:plain

これまでβ版で開発を進めてきたSwift SDKがついに公式リリースされました。mBaaSの一通りの機能に対応しており、もちろんプッシュ通知も送信できます。

今回はこのSwift SDKを使ってプッシュ通知を送ってみます。

SDKの読み込みについて

Swift SDKの読み込み方は3つあります。自分のプロジェクトにあった方法を選択してください。

SDKのインポート

まずSDKをインポートします。また、UserNotificationsも必要です。

import UIKit
import NCMB  # 追加する
import UserNotifications  # 追加する

Xcodeでプッシュ通知を追加する

iOSプロジェクトにプッシュ通知を追加します。

f:id:mbaasdevrel:20191001173656p:plain

SDKの初期化

SDKを初期化します。これは didFinishLaunchingWithOptions の中で行うのが良いでしょう。初期化は以下のコードで行えます。 YOUR_APPLICATION_KEYYOUR_CLIENT_KEY はそれぞれ皆さんの設定と書き換えてください。

NCMB.initialize(applicationKey: "YOUR_APPLICATION_KEY", clientKey: "YOUR_CLIENT_KEY");

didFinishLaunchingWithOptions の中の処理は次のようになります。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
  // Override point for customization after application launch.
  NCMB.initialize(applicationKey: "b34...01e", clientKey: "489...462");
  return true
}

プッシュ通知の許可ダイアログを出す

次に任意の場所でプッシュ通知の許可ダイアログを表示します。以下のように記述します。

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

デバイストークンをNCMBに保存する

ユーザがプッシュ通知を許可すると didRegisterForRemoteNotificationsWithDeviceToken が呼ばれます。そのトークンを以下のようなコードでNCMBに保存します。

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    //端末情報を扱うNCMBInstallationのインスタンスを作成
    let installation : NCMBInstallation = NCMBInstallation.currentInstallation

    //Device Tokenを設定
    installation.setDeviceTokenFromData(data: deviceToken)

    //端末情報をデータストアに登録
    installation.saveInBackground(callback: { result in
        switch result {
        case .success:
            //端末情報の登録が成功した場合の処理
            print("保存に成功しました")
        case let .failure(error):
            //端末情報の登録が失敗した場合の処理
            print("保存に失敗しました: \(error)")
            return;
        }
    })
}

プッシュ通知を送信する

NCMBのデータストアにデバイストークンが保存されているのが確認できたら、プッシュ通知を送信してみましょう。プッシュ通知を作成して、それが配信されれば完了です。

f:id:mbaasdevrel:20191001174809p:plain

まとめ

プッシュ通知についてはObjective-C、Swiftどちらも操作は殆ど変わりません。コード量も殆ど同じでしょう。ただ、ブリッジヘッダーファイルなどを作成しなくて良い分、Swiftの方が簡単に実装できます。ぜひ皆さんのSwift製アプリの中にプッシュ通知を組み込んでください。

プッシュ通知 (Swift) : 基本的な使い方 | ニフクラ mobile backend

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。