コンテンツにスキップ

組み込み確認事項

Fanship SDK を組み込み終わった後、下記の利用する際の共通の機能の実装及び動作と、各機能を利用する場合での実装及び動作をご確認ください。


共通

実装の確認

  • meta-data タグ の POPINFO_APP_ID に正しい値が記述されていることをご確認ください。
    特に、本番環境へ開発環境の値を設定していないかご確認ください。
<meta-data
    android:name="POPINFO_APP_ID"
    android:value="<FANSHIPのアプリケーションIDを設定してください>" />


  • meta-data タグの POPINFO_DEBUG が false またはこのタグを定義していないことをご確認ください。
<meta-data
    android:name="POPINFO_DEBUG"
    android:value="false" />


  • 以下の popinfo のPUSH配信受信のための service または FCM を 受信できるクラスが記述されていることをご確認ください。
<service
    android:name="パッケージ名.MyFirebaseMessagingService"
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>

※MyFirebaseMessagingService#onNewToken に Popinfo#setToken 、MyFirebaseMessagingService#onMessageReceivedに Popinfo#fcmMessageHandler がそれぞれ記述されているかどうかご確認ください。

import com.google.firebase.messaging.FirebaseMessagingService
import com.google.firebase.messaging.RemoteMessage
import jp.iridge.popinfo.sdk.Popinfo

class MyFirebaseMessagingService : FirebaseMessagingService() {

    override fun onNewToken(newToken: String) {
        super.onNewToken(newToken)

        // FCMトークンの登録
        Popinfo.setToken(this, newToken)
    }

    override fun onMessageReceived(remoteMessage: RemoteMessage) {
        super.onMessageReceived(remoteMessage)

        // FANSHIP FCMメッセージ設定
        Popinfo.fcmMessageHandler(this, remoteMessage)
    }

}
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
import jp.iridge.popinfo.sdk.Popinfo;

public class MyFirebaseMessagingService extends FirebaseMessagingService {

    @Override
    public void onNewToken(String newToken) {
        super.onNewToken(newToken);

        // FCMトークンの登録
        Popinfo.setToken(this, newToken);
    }

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);

        // FANSHIP FCMメッセージ設定
        Popinfo.fcmMessageHandler(this, remoteMessage);
    }
}


  • provider タグ内の android:authorities に正しく アプリパッケージ名.popinfo が記述されていることをご確認ください。
<provider
    android:name="jp.iridge.popinfo.sdk.PopinfoMessageProvider"
    android:exported="false"
    android:authorities="${applicationId}.popinfo" />


  • 必要なパーミッションが正しく記述されていることをご確認ください。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />


  • 独自の Application クラスの onCreate() 内でFANSHIPの初期化およびFCMトークンを設定していることをご確認ください。
class MyApplication : Application() {

    override fun onCreate() {
        super.onCreate()

        // FANSHIP の初期化
        Popinfo.init(this)

        FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
            if (!task.isSuccessful) {
                return@OnCompleteListener
            }

            // FCMトークンの登録
            val token = task.result
            Popinfo.setToken(applicationContext, token)
        })
    }
}
public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        // FANSHIP の初期化
        Popinfo.init(this);

        FirebaseMessaging.getInstance().getToken().addOnCompleteListener(new OnCompleteListener<String>() {
            @Override
            public void onComplete(@NonNull Task<String> task) {
                if (!task.isSuccessful()) {
                    return;
                }

                // FCMトークンの登録
                String token = task.getResult();
                Popinfo.setToken(getApplicationContext(), token);
            }
        });
    }
}


  • popinfo-sdk プロジェクトがライブラリモジュールとして追加されていることをご確認ください。


  • firebase-messaging ライブラリが正しく追加されていることをご確認ください。
dependencies {
    // ...
    implementation 'com.google.firebase:firebase-messaging:x.x.x'
}


targetSdkVersion 31 以上

  • 下記のパーミッションが正しく記述されていることをご確認ください。
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/>


ProGuard へ設定の追加

この手順はアプリで難読化設定をしている場合に行ってください

難読化時に指定している proguard ファイルへ以下を追加します。

-keep class jp.iridge.popinfo.sdk.** { *; }
-dontwarn jp.iridge.popinfo.sdk.**
-keep class * extends jp.iridge.popinfo.sdk.callback.PopinfoBaseCallback

※デフォルトではプロジェクト作成時に app/proguard-rules.pro というファイルが作成されます


動作の確認

Android 10 未満

  • アプリを起動中にホームボタンでホーム画面表示させた状態でプッシュ通知が届き、表示ボタンを押して正しく画面遷移することをご確認ください。

  • アプリを起動中にバックキー終了させ、ホーム画面表示させた状態でプッシュ通知が届き、表示ボタンを押して正しく画面遷移することをご確認ください。

  • アプリがフォアグラウンド状態で、プッシュ通知が届き、表示ボタンを押して正しく画面遷移することをご確認ください。

Android 10 以上

  • 端末設定アプリ通知Infoポップアップ が ON になっていることをご確認ください。
    Info はデフォルトの場合の通知チャンネル名となります

  • プッシュ通知が届き、ヘッドアップ通知をタップして正しく画面遷移することをご確認ください。


配信タイプ「Push通知のみ」を利用する場合

実装の確認

  • meta-data の POPINFO_USES_PUSH_ONLY の値が true になっていることをご確認ください。
<meta-data
    android:name="POPINFO_USES_PUSH_ONLY"
    android:value="true" />


動作の確認

  • Push通知のみ配信を行い、通知エリアの通知をタップして正しく画面遷移することをご確認ください。


位置情報を利用する場合
※GPS&ネットワーク測位共通

実装の確認

  • meta-data タグの POPINFO_LOCATION_SOURCES に GPS の文字列が記述されていることをご確認ください。
<meta-data
    android:name="POPINFO_LOCATION_SOURCES"
    android:value="GPS" />


  • 位置情報取得に必要なパーミッションが正しく記述されていることをご確認ください。
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />


  • Google Play Services に必要な設定が正しく記述されていることをご確認ください。
<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />


  • 位置情報取得に必要なライブラリが正しく追加されていることをご確認ください。
dependencies {
    // ...
    implementation 'com.google.android.gms:play-services-location:x.x.x'
}


端末設定の確認

  • 端末設定位置情報 が ON になっていることをご確認ください。

  • 端末設定アプリ許可 or 権限位置情報 が ON または、 常に許可アプリの使用中のみ許可 になっていることをご確認ください。


動作の確認

  • popinfo配信管理画面において、GPS配信を設定し、配信が届くことを確認してください。


Wi-Fi を利用する場合

実装の確認

  • meta-data タグの POPINFO_LOCATION_SOURCES に Wi-Fi の文字列が記述されていることをご確認ください。
<meta-data
    android:name="POPINFO_LOCATION_SOURCES"
    android:value="Wi-Fi" />


  • Wi-Fi検知に必要なパーミッションが正しく記述されていることをご確認ください。
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />


  • 位置情報検知パーミッションが正しく記述されていることをご確認ください。
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />


端末設定の確認

  • 端末設定Wi-Fi が ON になっていることをご確認ください。

  • 端末設定位置情報 が ON になっていることをご確認ください。

  • 端末設定アプリ許可 or 権限位置情報 が ON または、常に許可アプリの使用中のみ許可 になっていることをご確認ください。


動作の確認

  • popinfo配信管理画面において、Wi-Fi配信を設定し、配信が届くかどうかご確認ください。


iBeacon を利用する場合

実装の確認

  • meta-data タグの POPINFO_LOCATION_SOURCES に iBeacon の文字列が記述されていることをご確認ください。
<meta-data
    android:name="POPINFO_LOCATION_SOURCES"
    android:value="iBeacon" />


  • iBeacon検知に必要なパーミッションが正しく記述されていることをご確認ください。
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />


  • 位置情報検知パーミッションが正しく記述されていることをご確認ください。
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />


targetSdkVersion 31 以上

  • 下記のパーミッションが正しく記述されていることをご確認ください。
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />


端末設定の確認

  • 端末設定Bluetooth が ON になっていることをご確認ください。

  • 端末設定位置情報 が ON になっていることをご確認ください。

  • 端末設定アプリ許可 or 権限位置情報 が ON または、常に許可アプリの使用中のみ許可 になっていることをご確認ください。


動作の確認

  • popinfo配信管理画面において、Bluetooth配信を設定し、配信が届くかどうかご確認ください。


アプリ内メッセージ を利用する場合

動作の確認

  • popinfo配信管理画面において、アプリ内メッセージを設定し、配信が届くかどうかご確認ください。

  • アプリ内メッセージを表示する際、他のダイアログ等と同時に表示されてしまわないかご確認ください。
    ※初回インストール、アプリアップデート等の状態で表示した場合など

  • アプリ内メッセージのボタンを押下した際、設定をした遷移が正しく行われるかご確認ください。


GPS、Wi-Fi 、iBeacon のいずれかをバックグラウンドでも利用する場合

実装の確認

  • 下記のパーミッションが正しく記述されていることをご確認ください。
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

動作の確認

  • 初回起動時にプッシュ許諾、位置情報許諾の前にインフォメーションダイアログが表示され、バックグラウンド位置情報を使用するといった文言が表示されているかご確認ください。

    ※バックグラウンドで位置情報にアクセスするアプリとして、承認を受けるために必要となります。
    (参照 「アプリ内での開示を目立つ方法で提供する」: https://support.google.com/googleplay/android-developer/answer/9799150

    ※アプリ独自で情報を表示しております場合は、この確認は不要となります。