【iOS】(swift) Firebase の Notificationを使ってプッシュ通知を送る
先日開催されたGoogle I/O 2016で、Firebase新サービスについて発表があったりセッションがいくつも開催されていました。
※Firebaseのセッション動画などはこちらにまとめました!
個人的にFirebaseに非常に興味が湧きましたので、今回Firebase Notificationを利用してiOSアプリにプッシュ通知を実装してみました。
手順を以下にまとめます。
1、Xcodeで新しいプロジェクト作成する。
「Create a new Xcode project」で新しくプロジェクト作成します。
プロジェクト作成したらXcodeを一旦閉じます。
2、Podfileを編集する。
CocoaPods経由でFirebase/Core , Firebase/Messagingをインポートします。
そのため、Podfileに以下を追記します。
(※CocoaPodsの詳しい使い方は、今回割愛します。)
1 2 |
pod 'Firebase/Core' pod 'Firebase/Messaging' |
3、pod install
Podfileを編集した後、pod install します。
1 |
$pod install |
正常にインストールされたことを確認します。
4、AppDelegateを編集します。
Xcodeのプロジェクトを開き、AppDelegate.swiftにコードを以下のように追記します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import UIKit import Firebase @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Override point for customization after application launch. //set Notification register let notificationSettings = UIUserNotificationSettings( forTypes: [.Badge, .Sound, .Alert], categories: nil) application.registerUserNotificationSettings(notificationSettings) application.registerForRemoteNotifications() //Firebase FIRApp.configure() return true } //set APNSToken func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { FIRInstanceID.instanceID().setAPNSToken(deviceToken, type: .Sandbox) } |
***コードの説明***
Firebaseを利用するために20行目を追記します。
20行目:
1 |
FIRApp.configure() |
トークンの設定のために25〜29行目を追記します。
25〜29行目:
1 2 3 4 |
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { FIRInstanceID.instanceID().setAPNSToken(deviceToken, type: .Sandbox) } |
ちなみに、、、
対象のアプリに初めて通知機能を実装する時には、通知の登録が必要なので14〜17行目のコードが必要みたいです。すでに登録済みアプリの場合はこのコードなしでFirebaseのNotification利用できるようです。
14〜17行目:
1 2 3 4 |
let notificationSettings = UIUserNotificationSettings( forTypes: [.Badge, .Sound, .Alert], categories: nil) application.registerUserNotificationSettings(notificationSettings) application.registerForRemoteNotifications() |
5、Info.plistを編集します。
Info.plistに以下を追加します。
6、Firebaseのプロジェクトの作成
Firebaseサイトを開きます。
https://console.firebase.google.com
「新規
プロジェクトを作成」をクリックし、プロジェクトを作成します。
適当なプロジェクト名をつけて、「プロジェクトを作成」をクリックします。
次の画面で「iOSアプリにFirebaseを追加」をクリックします。
すると、以下のような画面になるので、iOSバンドルIDをXcode*で確認し、入力します。
そして「アプリを追加」をクリックします。App Store IDは省略可です。
*プロジェクト > TARGETS > (プロジェクト名) > General > Identity > Bundle Identifier で確認できます。
7、GoogleService-Info.plistをXcodeプロジェクトに追加する。
次の画面が表示されると「GoogleService-Info.plist」ファイルが自動的にダウンロードされますので、画面案内に従い、Xcodeプロジェクトにこのファイルを追加します。
8、APNs証明書の設定。
FirebaseにAPNs証明書を設定します。
※あらかじめAPNsのpush通知用のp12ファイルを作成しておく必要があります。
p12ファイルの作成方法は以下ページに記載しています。
「プロジェクトの設定」を開きます。
「設定」画面で、「クラウドメッセージング」タブを選択します。
「証明書をアップロード」をクリックし、ファイルをアップロードします。正常にアップロードされると証明書の有効期限が表示されます。
9、アプリを実機にインストール
Notificationをテストするため、作成したアプリを実機にインストールします。
10、Firebase Notification メッセージの設定
左ペインのメニューから「Notification」をクリックし、「最初のメッセージを送信」をクリックします。
すると、メッセージ作成の画面が表示されます。
「アプリを選択」で、作成したアプリが選択できるので選びます。
画面案内に従い入力し、「今すぐ送信」で「メッセージ送信」すると実機にNotificationが届きます。
ちなみに、
送信結果はNotificationページのメッセージ一覧から見ることができますが、情報が反映するまで少し時間(数時間?)かかるようです。
とても簡単にpush通知が実装できました!
FirebaseはNotification以外にも様々な便利機能が使えるので、これから色々試していきたいと思います。
kussuue