Skip to content

9 実装に関する特記事項

FANSHIP では、機能として、プッシュ通知(即時配信や予約配信)位置情報連動配信Wi-Fi 配信Bluetooth 配信(iBeacon) をご用意しております。

これらは組み合わせて使用でき、それぞれについて使用するかどうかによって、組み込み方法が異なります。

ここでは、以下に記したケースにおける実装方法についてご説明します。

  • プッシュ通知のみ利用する場合
  • 位置情報(ネットワーク測位のみ)を利用する場合
  • 位置情報(定期 GPS 測位)を利用する場合
  • Wi-Fi を利用する場合
  • iBeacon を利用する場合
  • アプリ側で地理的領域観測を利用している場合

ネットワーク測位

iOS の 大幅変更位置情報サービス のことであり、携帯基地局Wi-Fi アクセスポイント などを利用して位置情報を測位します。
GPS と比較して精度などが劣りますが、端末の電池消費量が少なくて済みます
当社では以前はセルベース測位と呼んでいましたが、この呼称を改めました。

定期 GPS 測位

当社独自のシステム であり、電池消費量をなるべく抑えながらバックグラウンドで GPS 測位を定期的に行います。
GPS 測位は 屋外での精度は高く安定 していますが、ネットワーク測位と比較すると電池消費量に問題があります
また、App Store の審査時に「GPS を利用する具体的な理由」を求められることがあり、審査に時間がかかる可能性があります。

9.1 プッシュ通知のみ利用する場合

Settings.bundle > Root.plist ファイルのうち、位置情報設定に関する項目(Item2, Item3, Item4)を削除してください(下図赤枠部分)。
8-1.png

これにより、SDK 内部では位置情報の利用が行われなくなります。

iPhone 端末においては「設定 > アプリ名」と進んだ画面に、位置情報に関する項目が表示されなくなります

不要な位置情報利用設定はオフに

5.2.6で述べた TARGETS > Capabilities > Background Modes > Location updates のチェックは 入れないでください。
理由なくチェックを入れた場合、 App Store に提出した際に App が却下 される原因になります。

9.2 位置情報(ネットワーク測位のみ)を利用する場合

Settings.bundle > Root.plist ファイルのうち、位置情報精度に関する項目 Item4 を削除してください(下図赤枠部分)。
8-2.png

これにより、SDK 内部では GPS を起動することなく、ネットワーク測位のみの位置情報検出 が行われるようになります。

iPhone 端末においては「設定 > アプリ名」と進んだ画面に「位置情報精度」が表示されなくなります。

PopinfoConfiguration.m ファイルにおいて、popinfoLocationUseYES にしてください。

TARGETS > Info > Custom iOS Target Properties 内に、以下3つのキーを追加してください。(5.2.11

  • Privacy - Location Always and When In Use Usage Description
  • Privacy - Location Always Usage Description
  • Privacy - Location When In Use Usage Description

上記3つのキーに対する値には、位置情報を利用する目的を記述する必要があります。
記述例については、前述の(5.2.11)をご参照ください。

利用理由は App Store の審査で確認されます

位置情報を利用しているにもかかわらず、上記3つのキーに対応する値に説明が記述されていない場合、App Store の審査結果に影響が出る可能性があります

GPS測位のみであれば Location updates は不要です

5.2.6で述べた TARGETS > Capabilities > Background Modes > Location updates のチェックは 入れないでください。
定期 GPS 測位を利用しないにも関わらずチェックを入れた場合、 App Store に提出した際に App が却下 される原因になります。

「利用理由」はエンドユーザーに表示されます

3つのキーの値として記述した文言は、iOS の許諾ダイアログなどで利用されます。
なお、iOS のバージョンアップを契機に、文字列が表示される箇所は Apple により変更される可能性があります ので、エンドユーザーの混乱を避けるためにも、3つの値には 原則同一の文字列を記述 してください。

キーチェーン利用時の注意点

アプリ側でキーチェーンにデータを保存している場合、 アクセス属性 にご注意ください。

iOS の仕様上、位置情報(ネットワーク測位)を利用する場合において、エンドユーザーが App をターミネートした後に端末を持って移動した場合、OS によってアプリがバックグラウンドで自動起動されます。
このとき、端末がロック状態であった場合 、キーチェーンのアクセス属性によっては 保存したデータにアクセスできない可能性 があります。

アプリ側においてこのタイミングでキーチェーンのデータを読み込む実装をしている場合は、キーチェーンにデータを保存する際に アクセス属性 kSecAttrAccessibleAfterFirstUnlock などを明示的に指定するようにする必要があります。

9.3 位置情報(定期 GPS 測位)を利用する場合

Settings.bundle > Root.plist ファイルを修正する必要はありません。
ただし、 Item 0 から Item 6 がすべて存在していることを確認してください。

PopinfoConfiguration.m ファイルにおいて、popinfoLocationUseYES にしてください。

TARGETS > Info > Custom iOS Target Properties 内に、以下3つのキーを追加してください。(5.2.11

  • Privacy - Location Always and When In Use Usage Description(iOS11用)
  • Privacy - Location Always Usage Description(iOS10以下用)
  • Privacy - Location When In Use Usage Description

上記3つのキーに対する値には、位置情報を利用する目的を記述する必要があります。
記述例については、前述の(5.2.11)をご参照ください。

利用理由は App Store の審査で確認されます

位置情報を利用しているにもかかわらず、上記3つのキーに対応する値に説明が記述されていない場合、App Store の審査結果に影響が出る可能性があります

「利用理由」はエンドユーザーに表示されます

3つのキーの値として記述した文言は、iOS の許諾ダイアログなどで利用されます。
なお、iOS のバージョンアップを契機に、文字列が表示される箇所は Apple により変更される可能性があります ので、エンドユーザーの混乱を避けるためにも、3つの値には 原則同一の文字列を記述 してください。

5.2.6で述べた TARGETS > Capabilities > Background Modes > Location updates のチェックが行われていることを確認してください。

Capabilities > Background Modes > Location updates にチェックが入っていない場合、バックグラウンドで GPS による位置情報を取得することができません。

バックグラウンドで GPS を利用する場合、App Store における審査の際にその理由や目的を説明しなくてはなりません。
「11 App Storeにアプリをリリースする際の注意点」を必ずご確認ください。

位置情報精度について

iPhone端末の「設定 > アプリ名 > 位置情報精度」の設定値は以下のように定義されます。

高(高い精度)

GPS とネットワーク測位を併用して位置情報を取得します。
精度は高いですが電池消費が目立ちます。
デフォルトではこの設定になっています。

低(低い精度、最少の電池消費)

主にネットワーク測位を使用して位置情報を取得します。
電池消費量が少なくて済みます。

9.4 Wi-Fiを利用する場合

PopinfoConfiguration.m ファイルにおいて、popinfoLocationUsepopinfoWifiUseYES にしてください。

TARGETS > Capabilities > Access WiFi information を有効にしてください。

Xcode 11 から Capabilities の操作方法が変更されています

Xcode 11 では、上部ペインの「+」ボタンをクリックするか、キーボードで Command + Shift + L を押すと、以下のウィンドウが現れますので、Access WiFi information をクリックすれば、 Capabilities の一覧に項目が追加されます。

8-4-1.png

なお、Access WiFi information をすでに追加している場合は、このウィンドウの一覧には表示されませんので、Capabilities の一覧をもう一度確認してください。

Access WiFi information が有効なプロファイルが必要です

プロビジョニングプロファイルに関連付けられている App ID の Capabilities においても Access WiFi information が有効になっている必要があります
Certificates, Identifiers & Profiles にて必ず確認してください。
8-4-2.png

もし、この項目が有効になっていなかった場合は、Access WiFi information にチェックを入れた後、プロビジョニングプロファイルを再作成し、Xcodeから新しいプロビジョニングプロファイルを再度設定してください。

この設定が無効になっていると、Wi-Fi を利用した機能に不具合が発生する原因となります。

TARGETS > Info > Custom iOS Target Properties 内に、以下3つのキーを追加してください。(5.2.11

  • Privacy - Location Always and When In Use Usage Description(iOS11用)
  • Privacy - Location Always Usage Description(iOS10以下用)
  • Privacy - Location When In Use Usage Description

上記3つのキーに対する値には、位置情報を利用する目的を記述する必要があります。
記述例については、前述の(5.2.11)をご参照ください。

利用理由は App Store の審査で確認されます

位置情報を利用しているにもかかわらず、上記3つのキーに対応する値に説明が記述されていない場合、App Store の審査結果に影響が出る可能性があります

「利用理由」はエンドユーザーに表示されます

3つのキーの値として記述した文言は、iOS の許諾ダイアログなどで利用されます。
なお、iOS のバージョンアップを契機に、文字列が表示される箇所は Apple により変更される可能性があります ので、エンドユーザーの混乱を避けるためにも、3つの値には 原則同一の文字列を記述 してください。

9.5 iBeaconを利用する場合

PopinfoConfiguration.m ファイルにおいて、popinfoLocationUsepopinfoBluetoothIBeaconUse を YES にしてください。なお、SDK3.2以前ではこのクラスのクラスメソッド iBeaconUUIDArray 内に iBeacon 用の UUID 文字列を指定していましたが、不要となりました。

TARGETS > Info > Custom iOS Target Properties 内に、以下3つのキーを追加してください。(5.2.11

  • Privacy - Location Always and When In Use Usage Description(iOS11用)
  • Privacy - Location Always Usage Description(iOS10以下用)
  • Privacy - Location When In Use Usage Description

上記3つのキーに対する値には、位置情報を利用する目的を記述する必要があります。
記述例については、前述の(5.2.11)をご参照ください。

利用理由は App Store の審査で確認されます

位置情報を利用しているにもかかわらず、上記3つのキーに対応する値に説明が記述されていない場合、App Store の審査結果に影響が出る可能性があります

「利用理由」はエンドユーザーに表示されます

3つのキーの値として記述した文言は、iOS の許諾ダイアログなどで利用されます。
なお、iOS のバージョンアップを契機に、文字列が表示される箇所は Apple により変更される可能性があります ので、エンドユーザーの混乱を避けるためにも、3つの値には 原則同一の文字列を記述 してください。

9.6 アプリ側で地理的領域観測を利用している場合

FANSHIP SDK の位置情報は、地理的領域観測(CLLocationManager startMonitoringForRegion:)も利用しています。

アプリ側においても別途、地理的領域観測を行っている場合は、予期せぬバッティングを防ぐため、PopinfoConfiguration.m 内で定義されている popinfoGeofenceUse フラグを NO に変更してください。