5 セットアップ
5.1 iOS Dev Center 上での設定
5.1.1 証明書の作成
iOS Dev Center にログインし、「Certificates, Identifiers & Profiles」>「Certificates」に進み、プッシュ通知用証明書(Certificates) を書き出してください。
以下に記した 2種類の証明書を書き出す必要があります。
- Apple Push Notification service SSL (Sandbox)
- Apple Push Notification service SSL (Sandbox & Production)
Apple Push Notification service SSL (Sandbox) は、開発用プロビジョニングプロファイルの生成においても使用されます。
Apple Push Notification service SSL (Sandbox & Production) は、アドホック用ならびに製品用プロビジョニングプロファイルの生成においても使用されます。
書き出すための手順の詳細は、別途お配りしている「FANSHIP 導入事前準備(APNs 証明書等)」をご参照ください。
5.1.2 証明書の登録
前項で作成した2つのファイルを、FANSHIP 配信管理画面の「アカウント設定」において設置してください。
5.1.3 プロファイルの更新
すでにアプリを公開されている場合、プッシュ通知を有効にするために、プロビジョニングプロファイルの更新を行います。開発用、アドホック用、製品用それぞれのプロビジョニングプロファイルを再作成してください。
プロファイルは必ず更新してください
更新を行わない場合、FANSHIP のすべての機能が利用できない 不具合につながります。
後述の「プッシュ通知の有効確認方法」も必ずご確認ください。
Wi-Fi配信を利用する場合について
Wi-Fi情報を利用する場合、「Identifiers > iOS App IDs 」にて Access WiFi Information を有効 にしてからプロビジョニングプロファイルを再作成してください。
後述の「8-4.Wi-Fi情報を利用する場合」も必ずご確認ください。
5.2 Xcodeプロジェクトファイルの設定
5.2.1 ファイルの追加
配布した lib 以下のファイル群すべてを、組み込むプロジェクトにドラッグアンドドロップし、ファイルを追加してください。
ファイルを追加すると、Xcodeプロジェクトに変更が適用されますので、下記項目を確認してください。
- アプリプロジェクトの TARGETS > Build Phases > Copy Bundle Resources に
Settings.bundleが含まれることを確認してください。 - TARGETS > Build Phases > Compile Sources に
PopinfoReceiver.xcdatamodeldが含まれることを確認してください。
5.2.2 ライブラリの追加
TARGETS > Build Phases > Link Binary With Libraries に以下を追加してください。
Embed オプションが表示されるものについては、いずれも Do Not Embed をお選びください。
- libPopinfoReceiverLib.a(配布物)
- CoreLocation.framework
- CoreData.framework
- SystemConfiguration.framework
- CoreTelephony.framework
- UserNotifications.framework
5.2.3 参照プロファイルの更新
プロビジョニングプロファイルを更新した場合、TARGETS > Build Settings > Code Signing において、更新後のプロビジョニングプロファイル を指定してください。
また更新前のプロビジョニングプロファイルはプロジェクトから削除してください。
5.2.4 Capabilities の設定
5.2.4.1 プッシュ通知
アプリプロジェクトの TARGETS > Capabilities > Push Notifications を有効にしてください。
Xcode 11 以降で Capabilities を追加するには
Xcode 11 から Capabilities の操作方法が変更されています。
上部ペインの「+」ボタンをクリックするか、キーボードで Command + Shift + L を押すと、以下のウィンドウが現れますので、Push Notifications をクリックすれば、 Capabilities の一覧に項目が追加されます。

なお、Push Notifications をすでに有効にしている場合は、このウィンドウの一覧には表示されませんので、Capabilities の一覧をもう一度確認してください。
5.2.4.2 位置情報
位置情報(定期 GPS 測位) を利用する組み込みを行った場合、SDK がバックグラウンドで GPS を起動できるよう、以下の操作が必要です。
- TARGETS > Capabilities > Background Modes をオンにします
- 「Location updates」にチェックを入れます。
位置情報利用は App Store の審査で確認されます
位置情報を利用しない場合(9.1にて後述) や、位置情報のネットワーク測位のみを利用する場合(9.2にて後述) は、この設定は行わないでください。
正当な理由なく位置情報を利用する設定を行った場合、 App Store の審査にて却下 されますので、厳守してください。
5.2.4.3 Wi-Fi情報利用
Wi-Fi情報を利用する場合、「TARGETS > Capabilities > Access WiFi Information 」をオンにしていただく必要があります。
Wi-Fi情報利用は App Store の審査で確認されます
Wi-Fi情報を利用しない場合は、この設定を行わないでください。
正当な理由なく設定を行った場合、 App Store の審査にて却下 される可能性があります。
5.2.4.4 バックグラウンドタスク
FANSHIPはバックグラウンドフェッチ機能を利用します。
ビルド対象プロジェクトにおいて、 TARGETS > Capabilities > Background Modes の「Background fetch」にチェックを入れてください。
5.2.4.5 サイレントプッシュについて
FANSHIPはサイレントプッシュ通知を利用しません。
他の目的で使用する場合を除き、ビルドするプロジェクトの TARGETS > Capabilities > Background Modes において「Remote notifications」に チェックは入れないでください。
「Background Modes」や「Remote notifications」といった語句の組み合わせから、あたかも「バックグラウンド時にプッシュ通知を届ける」ために必要であるかのように見えますが、これは「Background Notifications」(サイレントプッシュ)を利用可能にするオプションです。
極めて紛らわしいのですが、本SDKではこのオプションは使用しません。
5.2.5 プッシュ通知設定確認
アプリをビルドした際、プッシュ通知が有効になっているかを必ず確認してください。
具体的には、ipa ファイルの Entitlements に、キー aps-environment が含まれていることを確認してください。
ipa ファイルの Entitlements は、その ipa ファイル中に含まれる appファイル を検査することで確認できます。
appファイルを取り出す方法
appファイル は以下のようにして ipa から取り出すことができます(製品版プロビジョニングプロファイルの例)。
- アプリプロジェクトを Xcode で開き、製品版プロビジョニングプロファイルを指定し、「Product > Archive」と進んで、アプリをビルドします。
- Xcode の Organizer が開いたら、「Save For Enterprise or As-Hoc Deployment」を選んで進み、製品版プロビジョニングプロファイルを指定して、ipa ファイルを作成します。
- 作成した ipa ファイルの拡張子を「zip」に変更します。
- その zip ファイルを解凍すると、「Payload」というフォルダが出来ます。そのフォルダ内に .app ファイル が生成されています。
appファイルに対して、以下のコマンドを実行すると、Entitlements の内容を確認できます。
codesign -d --entitlements - <YourAppName>.app
出力に、以下のように「
<key>aps-environment</key>」が含まれていることを確認してください。
<key>application-identifier</key>
<string>ZZZZZZZZ.com.yourcompany.yourappid</string>
<key>aps-environment</key>
<string>production</string>
aps-environment が存在しない場合は
aps-environment が含まれない場合、アプリにプッシュ通知用のトークンを取得する許可が与えられていません。
プロビジョニングプロファイルの更新 が行われたか、ご確認ください。
開発版、アドホック版、製品版のそれぞれで設定されているか確認する必要があります。
プッシュ通知設定の誤りは自動検出されません
製品版でプッシュ通知が有効になっていない場合でも、アプリの ビルド 、 アップロード 、申請作業 すべてにおいて いかなる警告も発生しません 。
App公開後に発覚しても バージョンアップ版を公開するまで修正することができません ので、公開前にプッシュ通知が有効になっていることを必ず検査してください。
5.2.6 Info.plist の設定
5.2.6.1 ユーザーデータアクセス
位置情報、Wi-Fi情報、iBeacon のいずれかを利用する場合、TARGETS > Info > Custom iOS Target Properties 内に、以下3つのキーを追加してください。
- Privacy - Location Always and When In Use Usage Description (iOS11,12用)
- Privacy - Location Always Usage Description (iOS10以下用)
- Privacy - Location When In Use Usage Description(iOS13用)
上記3つのキーに対する値には、位置情報を利用する目的( 利用理由 )を記述する必要があります。
以下の記述例を参考に文言を記述してください。
利用理由の記述例
お知らせを配信するために位置情報を利用することがあります

「利用理由」は App Store の審査で確認されます
位置情報、Wi-Fi情報、iBeacon のいずれかを利用しているにもかかわらず、この記述が行われていない場合、App Store の審査結果に影響が出る可能性があります。
「利用理由」はエンドユーザーに表示されます
3つのキーの値として記述した文言は、iOS の許諾ダイアログなどで利用されます。

なお、iOS のバージョンアップを契機に、文字列が表示される箇所は Apple により変更される可能性があります ので、エンドユーザーの混乱を避けるためにも、3つの値には 原則同一の文字列を記述 してください。
5.2.6.2 Background Task 設定
本 SDK のバックグラウンドを実行するために、 iOS13 から導入された Background Tasks フレームワークを使用する場合は Permitted background task scheduler identifiers を登録する必要があります。
「7.3.1 Background App Refresh Tasks を利用する」もあわせてご確認ください。
- TARGETS > Info > Custom iOS Target Properties 内に、キー
Permitted background task scheduler identifiersを追加します。 - キーに対する値の Type が Array になっていることを確認します。
- Array の中に Item を1行追加します。
- 追加した Item の Type が String になっていることを確認します。
- Item の値に識別子を設定します。

識別子は、他のそれと重複しないような文字列を設定してください。
また、Background App Refresh Tasks と Background Processing Tasks を同時に利用する場合は、それぞれ異なる値を設定する必要があります。
識別子はリバースドメイン形式が推奨されます。
また、 Background App Refresh Tasks を利用する場合は、末尾に refresh を、
Background Processing Tasks を利用する場合は末尾に process をつけることが多いようですが、特に決まりはありません。
設定した識別子は SdkSettings.plist 内のキー FanshipBGTaskSchedulerPermittedIdentifiers の値にも設定してください。
5.3 その他
5.3.1 Swift プロジェクト向けセットアップ
Objective-C プロジェクトに組み込む場合は、本項の設定は不要です。
Swift プロジェクトにおいて利用する場合は、Build Settings にてパスの設定を行ってください。
下記のいずれかの方法で設定します。
Bridging Header を用いる場合
- 本SDK付属の Popinfo-Bridging-Header.h 経由で import する場合は Build Settings > Swift Compiler - General の Objective-C Bridging Header に Popinfo-Bridging-Header.h へのパスを指定します。

Clang Modules を用いる場合
-
本SDK付属の module.modulemap 経由で import する場合は Build Settings > Swift Compiler - Search Paths の Import Paths に module.modulemap の ディレクトリパス を指定します。

module.modulemap ファイルのパスではなく、module.modulemap を内包するディレクトリのパスを指定します。
5.3.2 ARC-disabled プロジェクト向けセットアップ
SDK のソースコードは ARC(Automatic Reference Counting) が有効になっています。
そのため、 ARC を「無効」にしたアプリに組み込む必要がある場合は、以下の手順で設定をお願いします。
多くの場合 ARC の設定は不要です
Xcode 6 以降、新規作成されるプロジェクトはデフォルトで ARC が有効になっています。
現在において、ARCを無効にして iPhone アプリ開発を行うケースは 極めて稀 ですので、多くの場合以下の手順の設定は不要です。
- TARGETS > Build Phases > Compile Sources から PopinfoListViewController.m を選択します
- エンターキーを押して「
-fobjc-arc」と入力します。 - 残りの(以下の)ファイルに対しても「
-fobjc-arc」と入力します。PopinfoDetailViewController.mPopinfoPadViewController.mPopinfoSegmentSettingsViewController.mPopinfoViewConfiguration.mPopinfoConfiguration.m