Skip to content

6 動作概要

ソースコードを修正する前に、前提知識として、アプリを初回起動した際のシーケンスや、プッシュ通知を受信するまでのシーケンスをご説明します。

6.1 初回起動時のシーケンス

SDKを組み込んだアプリは、初回起動時において以下のシーケンスをたどります。

アプリを起動する。

PopinfoReceiverクラスのインスタンスを生成(sharedReceiver)し、設定を読み込む(loadSettings)。

FANSHIP サーバーと非同期通信を行い、ユーザーID(popinfoID)を取得する。
取得に成功すると、デリゲートメソッド-[PopinfoReceiverDelegate popinfoReceiverDidGetPopinfoId:uid:]がコールされる。

位置情報を使用する場合は、iOS から位置情報オプトインダイアログが表示される。

エンドユーザーが位置情報を許可しなかった場合は

ここで「許可しない」を選んだ場合は、FANSHIP 内部では位置情報を取得することができず、位置連動配信ができません。
変更したい場合は、端末の「設定 > プライバシー > 位置情報サービス > アプリ名」から設定を変更する必要があります。

iOSからプッシュ通知オプトインダイアログが表示される。

エンドユーザーがプッシュ通知を許可しなかった場合は

ここで「許可しない」を選んだ場合は、プッシュ通知を受信することができません。
「許可」状態に変更したい場合は、端末の「設定 > 通知 > アプリ名」において、オフになっている箇所はオンにしていただき、「通知のスタイル」を バナー通知(ダイアログ) にしてください。

組み込み側において、-[AppDelegate application:didRegisterForRemoteNotificationsWithDeviceToken:] がコールされ、端末固有のプッシュ通知用のデバイストークンが取得できる。

プッシュ通知オプトインダイアログに対して「許可」している場合は、FANSHIP サーバーと通信し(registerToken:)、取得したデバイストークンとユーザーID の紐付けが完了する。

以上で初回起動が完了し、プッシュ通知を受信することができる状態になる。

6.2 プッシュ通知を受信するまでのシーケンス

プッシュ通知の配信を実行してから端末側で受信するまでは、以下のシーケンスをたどります。

FANSHIP 配信管理画面から、配信を実行する。

FANSHIP サーバーが Apple 社のサーバー(APNs)に対して、指定した端末(デバイストークン)に対してプッシュ通知を配信するようリクエストする。

APNs が端末に対してプッシュ通知を配信する。

端末にプッシュ通知が到達する。この時の端末側の動作は、プッシュ通知を受けるアプリの状態によって異なる。

アプリがターミネート(終了している)状態

  • iOS からバナー(端末側設定によってはダイアログ)が表示される。
  • バナーをクリックすると、組み込み側において、下記がコールされる。
    • application: didFinishLaunchingWithOptions:
    • userNotificationCenter:didReceiveNotificationResponse:withCom pletionHandler:

アプリがバックグラウンド(裏にいる)状態

  • iOS からバナー(端末側設定によってはダイアログ)が表示される。
  • バナーをクリックすると、組み込み側において userNotificationCenter:didReceiveNotification Response:withCompletionHandler: がコールされる。

アプリがフォアグラウンド(最前面にいる)状態

  • iOS からのバナー等は表示されない。
  • プッシュ通知到達後ただちに、組み込み側において、application: didReceiveRemoteNotification がコールされる

SDK が FANSHIP サーバーにアクセスして(receiveNotification:)、プッシュ通知されたメッセージの内容(タイトル、本文など)を取得しにいく。

メッセージの内容を画面に表示するため、お知らせ一覧画面(PopinfoListViewController)やお知らせ詳細画面(PopinfoDetailViewController)を生成して表示させる。

この動作は組み込み方次第です

詳細な組み込みについては、「7.4 PopinfoListViewController を使い、お知らせ一覧画面を表示する」 および 「7.5 PopinfoDetailViewController を使い、お知らせ詳細画面を表示する 」をご参照ください。

では、これらのシーケンスを念頭に、SDK を正しく組み込んでいただきますようお願いいたします。