組み込み確認事項(アプリ開発者用)
Fanship SDK を組み込み終わった際、下記のように実装及び設定されているかご確認ください。
共通
PopinfoConfiguration.mを確認する
- popinfoApplicationIDに正しい値が設定されているか?
本番用とテスト用でこの値を分けている場合、本番用になっているかどうか必ず確認してください。 - popinfoTestLogUseにNOが設定されているか?
YESの場合、popinfoSDK内の主な動作をコンソールに表示させます。Apple審査に出す場合は必ずNOにしてください。 - popinfoPushUseがYESに設定されているか?
NOの場合、プッシュ通知は配信されません。
CoreDataのモデルバージョンを確認する
- 最新のモデルバージョンをこちらから確認してください
Xcode上で、PopinfoReceiver.xcdatamodeldをクリックし、画面右側「Core Data Model > Model Version」の「Current」が「PopinfoReceiver <最新のモデルバージョン>」となっていることを確認してください。
プロジェクト設定を確認する
- TARGETS > Signing & Capabilities > Background Modes > Background fetch にチェックがついているか?
- TARGETS > Signing & Capabilities > Push Notificationsが有効になっているか?
- TARGETS > Signing & Capabilities > Background Modes > Remote notifications にチェックは 不要 です
バックグラウンドタスクの方式を確認する
- AppDelegate.mに以下のような実装があることを確認してください。
func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { PopinfoReceiver.shared.enterBackgroundFetch() completionHandler (.newData) }
- TARGETS >Info > Custom iOS Target Properties内に、以下の設定があることを確認してください。
BGTaskSchedulerPermittedIdentifiersにリバースドメイン方式でタスク識別子を設定されている(例:jp.iridge.popinfo.refresh) - SdkSettings.plistを確認する
FanshipBGTaskSchedulerPermittedIdentifiersに上と同じタスク識別子が設定されていることを確認してください。 - AppDelegate.mに以下のような実装があることを確認してください。
func applicationDidEnterBackground(_ application: UIApplication) { if #available(iOS 13.0, *) { PopinfoReceiver.shared.enterBackgroundTask() } }
- TARGETS > Signing & Capabilities > Background Modes > Background processing にチェックがついているか?
- TARGETS >Info > Custom iOS Target Properties内に、以下の設定があることを確認してください。
BGTaskSchedulerPermittedIdentifiersにリバースドメイン方式でタスク識別子を設定されている(例:jp.iridge.popinfo.refresh) - SdkSettings.plistを確認する
FanshipBGTaskSchedulerPermittedIdentifiersに上と同じタスク識別子が設定されていることを確認してください。 - TARGETS > Build Settings > Other C Flagsに
-DFANSHIP_BG_PROCESSING_TASK_USE=1が設定されているか? - AppDelegate.mに以下のような実装があることを確認してください。
func applicationDidEnterBackground(_ application: UIApplication) { if #available(iOS 13.0, *) { PopinfoReceiver.shared.enterBackgroundTask() } }
ProvisioningProfileを確認する
- アーカイブされたipaファイルから使用されたProvisioningProfileの詳細を確認する方法
- ファイルの拡張子を.ipaから.zipへ変更する
- zipファイルを解凍してPayloadディレクトリ内にappファイルがあることを確認する
- ターミナルアプリで以下のコマンドを実行する
codesign -d --entitlements - <YourAppName>.app
出力される内容は以下のようなものです。<key>aps-environment</key>が含まれており、対応する<string>production</string>であることを確認してください。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>application-identifier</key> <string>JR3P4D8W29.jp.iridge.popinfo.demo.dev.prod</string> <key>aps-environment</key> <string>production</string> <key>com.apple.developer.networking.wifi-info</key> <true/> <key>com.apple.developer.team-identifier</key> <string>JR3P4D8W29</string> <key>get-task-allow</key> <false/> </dict> </plist>
位置情報
PopinfoConfiguration.mを確認する
- popinfoLocationUseがYESになっているか?
Settings.bundleを確認する
- Settings.bundle > Root.plistが編集されていることを確認する。
位置情報精度に関する項目 Item 5(Group - popinfoSettings 03)が削除されているか?
<dict> <key>Title</key> <string>popinfoSetting03</string> <key>Type</key> <string>PSGroupSpecifier</string> </dict>
削除対象の項目はソースコード表示では上が該当します。
- Settings.bundle > Root.plistが編集されていないことを確認する。
位置情報精度に関する項目 Item 5(Group - popinfoSettings 03)が存在しているか?
存在しない場合、編集前の状態に戻す必要があります。
プロジェクト設定を確認する
- TARGETS > Signing & Capabilities > Background Modes > Location updatesにチェックは 不要 です
- TARGETS > Signing & Capabilities > Background Modes > Location updatesにチェックが入っているか?
- TARGETS >Info > Custom iOS Target Properties内に、以下3つのキーが設定されているか?
Privacy - Location Always and When In Use Usage Description Privacy - Location Always Usage Description(iOS10以下用) Privacy - Location When In Use Usage Description
これらに位置情報を利用する目的を記述する必要があります。「お知らせを配信するために位置情報を利用することがあります」などの趣旨の文言を記述してください。記述しない場合、Apple社のアプリ審査に影響が出る可能性があります。(3つとも同じ値を入力することをおすすめします。)
Wi-Fi
PopinfoConfiguration.mを確認する
- popinfoLocationUseがYESになっているか?
- popinfoWifiUseがYESになっているか?
プロジェクト設定を確認する
- TARGETS > Signing & Capabilities > Access WiFi Informationが有効になっているか?
プロジェクトファイル内のEntitlements File にAccess WiFi Informationキーが追加されており、値がYESであることを確認してください。 - TARGETS >Info > Custom iOS Target Properties内に、以下3つのキーが設定されているか?
Privacy - Location Always and When In Use Usage Description Privacy - Location Always Usage Description(iOS10以下用) Privacy - Location When In Use Usage Description
これらに位置情報を利用する目的を記述する必要があります。「お知らせを配信するために位置情報を利用することがあります」などの趣旨の文言を記述してください。記述しない場合、Apple社のアプリ審査に影響が出る可能性があります。(3つとも同じ値を入力することをおすすめします。)
iBeacon
PopinfoConfiguration.mを確認する
- popinfoLocationUseがYESになっているか?
- popinfoBluetoothIBeaconUseがYESになっているか?
- TARGETS >Info > Custom iOS Target Properties内に、以下3つのキーが設定されているか?
Privacy - Location Always and When In Use Usage Description Privacy - Location Always Usage Description(iOS10以下用) Privacy - Location When In Use Usage Description
これらに位置情報を利用する目的を記述する必要があります。「お知らせを配信するために位置情報を利用することがあります」などの趣旨の文言を記述してください。記述しない場合、Apple社のアプリ審査に影響が出る可能性があります。(3つとも同じ値を入力することをおすすめします。)
AppClip
プロジェクト設定を確認する
- TARGETS > Signing & Capabilities > App Groupsが有効になっているか?
アプリとAppClipのTARGETS双方でApp Groupsが有効になっている必要があります。
App Groupsに今回利用するコンテナ名を設定してください。(例:group.iridge.demo) - AppClipのTARGETS > Build Settings > Preprocessor Macrosに
APPCLIP=1が設定されているか?
Info.plistを確認する
- AppClip > Requests ephemeral user notificationsにYESが設定されているか?
ユーザーに許諾ダイアログを表示することなくプッシュ通知を送るにはYESにしておく必要があります。(起動後8時間くらい有効)
SdkSettings.plistを確認する
- FanshipAppClipUseのValueに1が設定されているか?
- FanshipAppGroupNameのValueに正しいコンテナ名が設定されているか?
TARGETS > Signing & Capabilities > App Groupsで設定されているコンテナ名を設定してください。