これまでβ版で開発を進めてきたSwift SDKがついに公式リリースされました。mBaaSの一通りの機能に対応しており、もちろんプッシュ通知も送信できます。
今回はこのSwift SDKを使ってプッシュ通知を送ってみます。
- SDKの読み込みについて
- SDKのインポート
- Xcodeでプッシュ通知を追加する
- SDKの初期化
- プッシュ通知の許可ダイアログを出す
- デバイストークンをNCMBに保存する
- プッシュ通知を送信する
- まとめ
SDKの読み込みについて
Swift SDKの読み込み方は3つあります。自分のプロジェクトにあった方法を選択してください。
SDKのインポート
まずSDKをインポートします。また、UserNotificationsも必要です。
import UIKit import NCMB # 追加する import UserNotifications # 追加する
Xcodeでプッシュ通知を追加する
iOSプロジェクトにプッシュ通知を追加します。
SDKの初期化
SDKを初期化します。これは didFinishLaunchingWithOptions
の中で行うのが良いでしょう。初期化は以下のコードで行えます。 YOUR_APPLICATION_KEY
と YOUR_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のデータストアにデバイストークンが保存されているのが確認できたら、プッシュ通知を送信してみましょう。プッシュ通知を作成して、それが配信されれば完了です。
まとめ
プッシュ通知についてはObjective-C、Swiftどちらも操作は殆ど変わりません。コード量も殆ど同じでしょう。ただ、ブリッジヘッダーファイルなどを作成しなくて良い分、Swiftの方が簡単に実装できます。ぜひ皆さんのSwift製アプリの中にプッシュ通知を組み込んでください。