Skip to content
This repository has been archived by the owner on Apr 1, 2024. It is now read-only.

NIFCLOUD-mbaas/SwiftPayloadApp

 
 

Repository files navigation

【Swift】プッシュ通知からデータを取得してみよう!(ペイロード)

2016/10/07作成(2020/07/08更新)

画像1

概要

  • ニフクラmobile backendの『プッシュ通知』機能とプッシュ通知を受信する際、プッシュ通知の『ペイロードデータを取得する』機能を実装したサンプルプロジェクトです
  • 簡単な操作ですぐに ニフクラmobile backendの機能を体験いただけます★☆

ニフクラmobile backendって何??

スマートフォンアプリのバックエンド機能(プッシュ通知・データストア・会員管理・ファイルストア・SNS連携・位置情報検索・スクリプト)が開発不要、しかも基本無料(注1)で使えるクラウドサービス!

注1:詳しくはこちらをご覧ください

画像2

動作環境

  • Mac OS 12.5.1 (Monterey)
  • Xcode Version 14.0
  • iPhone X (iOS 16)
    • このサンプルアプリは、プッシュ通知を受信する必要があるため実機ビルドが必要です

※上記内容で動作確認をしています

プッシュ通知の仕組み

  • ニフクラmobile backendのプッシュ通知は、iOSが提供している通知サービスを利用しています
  • iOSの通知サービス APNs(Apple Push Notification Service)

画像10

  • 上図のように、アプリ(Xcode)・サーバー(ニフクラmobile backend)・通知サービス(APNs)の間でやり取りを行うため、認証が必要になります
  • 認証に必要な鍵や証明書の作成は作業手順の「0.プッシュ通知機能使うための準備」で行います

作業の手順

0.プッシュ通知機能使うための準備

【iOS】プッシュ通知の受信に必要な証明書の作り方(開発用)

  • 上記のドキュメントをご覧の上、必要な証明書類の作成をお願いします
  • 証明書の作成にはApple Developer Programの登録(有料)が必要です

画像i002

1. ニフクラmobile backendの会員登録とログイン→アプリ作成と設定

  • 上記リンクから会員登録(無料)をします。登録ができたらログインをすると下図のように「アプリの新規作成」画面が出るのでアプリを作成します

画像3

  • アプリ作成されると下図のような画面になります
  • この2種類のAPIキー(アプリケーションキーとクライアントキー)はXcodeで作成するiOSアプリにニフクラmobile backendを紐付けるために使用します

画像4

  • 続けてプッシュ通知の設定を行います
  • 「アプリ設定」>「プッシュ通知」を開きます
    • プッシュ通知の許可:「許可する」を選択して「保存する」をクリックします
    • 証明書(p12):「⑦APNs用証明書(.p12)」をここに設定します

画像5

2. GitHubからサンプルプロジェクトのダウンロード

3. Xcodeでアプリを起動

  • ダウンロードしたフォルダを開き、「SwiftPayloadApp.xcworkspace」をダブルクリックしてXcode開きます(白い方です)

画像09 画像6

  • 「SwiftPayloadApp.xcodeproj」(青い方)ではないので注意してください!

画像08

4. APIキーの設定

  • AppDelegate.swiftを編集します
  • 先程ニフクラmobile backendのダッシュボード上で確認したAPIキーを貼り付けます

画像07

  • それぞれYOUR_NCMB_APPLICATION_KEYYOUR_NCMB_CLIENT_KEYの部分を書き換えます
  • このとき、ダブルクォーテーション(")を消さないように注意してください!
  • 書き換え終わったらcommand + sキーで保存をします

5. 実機ビルド

  • 始めて実機ビルドをする場合は、Xcodeにアカウント(AppleID)の登録をします
    • メニューバーの「Xcode」>「Preferences...」を選択します
    • Accounts画面が開いたら、左下の「+」をクリックします。
    • Apple IDとPasswordを入力して、「Add」をクリックします

画像i29

  • 追加されると、下図のようになります。追加した情報があっていればOKです
  • 確認できたら閉じます。

画像i30

  • 次に「TARGETS」 >「General」を開きます
  • 「Idenrity」>「Bundle Identifier」を入力します
  • AppID 作成時に指定した「Bundle ID」を入力してください

画像20

  • 次に「TARGETS」 >「Signing & Capabilities」を開きます
  • 「Teame」を選択します
  • 先ほど「Preferences」で設定したアカウント情報を選択します
  • 「Bundle Identifier」に応じて正しい「Provisioning Profile」が選択されればOKです
  • 正しく読み込まれない場合は、ダウンロードしたプロビジョニングプロファイルを一度 ダブルクリック して読み込んだ後リトライしてください

画像21

  • 上記画像の下方に表示されている「Push Notifications」はプッシュ通知を利用するために必要な設定です
  • このサンプルでは予め設定してあります
  • 上方「+Capability」から追加できます
  • これで準備は完了です
  • lightningケーブルで登録した動作確認用iPhoneをMacにつなぎます
  • Xcode画面で左上で、接続したiPhoneを選び、実行ボタン(さんかくの再生マーク)をクリックします

6.動作確認

  • インストールしたアプリを起動します
  • プッシュ通知の許可を求めるアラートが出たら、必ず許可してください!
  • 起動されたらこの時点でデバイストークンが取得されます
  • ニフクラmobile backendのダッシュボードで「データストア」>「installation」クラスを確認してみましょう!

画像12

7.プッシュ通知を送って、データを取得しましょう(アプリ起動時)

  • まずはアプリを 起動した状態 でプッシュ通知を送ってみましょう!
  • ニフクラmobile backendのダッシュボードで「プッシュ通知」>「+新しいプッシュ通知」をクリックします
  • プッシュ通知のフォームが開かれます
  • タイトル、メッセージ、JSON、URL(他も後ほど試してみてください)を入力してプッシュ通知を作成します

画像11

  • 端末を確認しましょう!
  • 少し待つとプッシュ通知が届きます
  • アプリ起動時はプッシュ通知が 表示されません!(iOSの仕様)ただし、プッシュ通知が受信できていないわけではなく、正しく配信されていれば、ペイロードを受信し、画面に表示します
  • ペイロードデータの見方については「解説」をご覧ください

8.プッシュ通知を送って、データを取得しましょう(非アプリ起動時)

  • 次にアプリを 完全に閉じた状態 でプッシュ通知を送ってみましょう!
  • プッシュ通知は7.と同様にダッシュボードから作成してください
  • 今度はプッシュ通知が受信されますので、プッシュ通知をタップしてアプリを起動します
  • 起動時にペイロードを取得し、画面に表示します

画像1

  • ペイロードデータの見方については「解説」をご覧ください

解説

  • 下記2点について解説します
  • ペイロードデータについて
  • サンプルプロジェクトに実装済みの内容

ペイロードデータについて

  • ニフクラmobile backendのダッシュボードで入力した内容は以下のようなJSONデータで取得できます
{
    "aps" : {
        "alert" : {
            "body" : "message",
            "title" : "title"
        },
        "sound" : "default"
    },
    "com.nifcloud.mbaas.PushId" : "********",
    "data" : "json",
    "com.nifcloud.mbaas.RichUrl" : "https://mbaas.nifcloud.com/"
}
  • 「aps」の1つ下の階層に「alert」があり、この1つ下の階層にダッシュボードで入力した「メッセージ」と「タイトル」が、それぞれ「body」と「title」に設定されます
  • ダッシュボードで「音声ファイル名」を設定した場合、「aps」の1つ下の階層に「sound」に設定されます
  • ダッシュボードで「JSON」に入力したデータはそのまま追加されて設定されます
  • ダッシュボードで「URL」に設定した場合、「com.nifcloud.mbaas.RichUrl」として設定されます

サンプルプロジェクトに実装済みの内容

SDKのインポートと初期設定

コード紹介

デバイストークン取得とニフクラmobile backendへの保存
  • AppDelegate.swiftdidFinishLaunchingWithOptionsメソッドにAPNsに対してデバイストークンの要求するコードを記述し、デバイストークンが取得された後に呼び出されるdidRegisterForRemoteNotificationsWithDeviceTokenメソッドを追記をします
ペイロード取得
  • プッシュ通知からペイロードを取得するコードは下記の2パターンあります

  • 【ペイロード:アプリ非起動時に受信】アプリが起動されたときにプッシュ通知の情報を取得する

  • 【ペイロード:アプリ起動時に受信】アプリが起動中にプッシュ通知の情報を取得する

  • それぞれAppDelegate.swiftの次の箇所に追記します

アプリ非起動時に受信する場合

  • 次にアプリが起動されたときにペイロードを取得するため、didFinishLaunchingWithOptionsメソッド内に記述します
// 【ペイロード:アプリ非起動時に受信】アプリが起動されたときにプッシュ通知の情報を取得する
if let remoteNotification = launchOptions?[UIApplication.LaunchOptionsKey.remoteNotification] as? NSDictionary {
  /* 省略 */
}

アプリ起動時に受信する場合

  • 起動中に受信するため、didReceiveRemoteNotificationメソッドを追記し、記述します
// 【ペイロード:アプリ起動時に受信】アプリが起動中にプッシュ通知の情報を取得する
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
  /* 省略 */
}

参考

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Swift 96.9%
  • Ruby 3.1%