コンテンツにスキップ

バックグラウンドタスク

本 SDK は下記の目的のために、エンドユーザーが App を起動していないときもバックグラウンドタスクを実行させる必要があります。

  • ユーザーが App を起動していないときもGPS配信またはBluetooth配信を実施する
  • ユーザーの App 利用状況を集計し、FANSHIP 管理画面から確認できるようにする

バックグラウンドタスクを実行するために、Background Tasks API の BGAppRefreshTask を利用します。

BGAppRefreshTask について

BGAppRefreshTask は iOS 13 から追加された Background Tasks API に属する機能です。

詳しくは、Appleのドキュメント Choosing Background Strategies for Your App をご覧ください。

旧バックグラウンドフェッチ と BGProcessingTask を利用した実装方法は廃止されました。

SDK 13.0.0 で enterBackgroundFetch が削除されました。旧バックグラウンドフェッチを利用していた場合は、以下の手順で BGAppRefreshTask へ切り替えてください。

  1. AppDelegate の application(_:performFetchWithCompletionHandler:) 内の enterBackgroundFetch() の呼び出しを削除します。
  2. 下記 Info.plist の設定 および BGAppRefreshTask を利用する の手順に従って実装を追加します。

Info.plist の設定

BGAppRefreshTask を使用する場合は Permitted background task scheduler identifiers を登録する必要があります。

plist-bgtask.png

  1. TARGETS > Info > Custom iOS Target Properties 内に、キー Permitted background task scheduler identifiers を追加します。
  2. キーに対する値の Type が Array になっていることを確認します。
  3. Array の中に Item を1行追加します。
  4. 追加した Item の Type が String になっていることを確認します。
  5. Item の値に識別子を設定します。
  6. SdkSettings.plist 内のキー FanshipBGTaskSchedulerPermittedIdentifiers の値に、同じ識別子を設定する。

BGAppRefreshTask を利用する

  1. TARGETS > Signing & Capabilities > Background Modes にて、下記のチェックボックスをオンにします。
    • Background fetch
  2. バックグラウンド遷移時に、-[PopinfoReceiver enterBackgroundTask] をコールします。

    - (void)sceneDidEnterBackground:(UIScene *)scene {
        [PopinfoReceiver.sharedReceiver enterBackgroundTask];
    }
    
    func sceneDidEnterBackground(_ scene: UIScene) {
        PopinfoReceiver.shared.enterBackgroundTask()
    }