• 位置情報を利用した配信を行う

    FANSHIP SDK では位置情報を利用することで、プッシュ通知の配信方法として「GPS 配信」、「Wi-Fi 配信」「Bluetooth 配信」を行えるようになります。

    また、同時に位置情報の蓄積も行われるので、セグメント機能を用いた配信に利用するといったことなども可能となります。

    位置情報を利用をする場合は下記手順で実装してください。

     

    1. meta-data の追加

    下記の項目を AndroidManifest.xml に追加してください。

    <!-- 使用する位置情報の取得方法を設定してください。※ PUSH配信のみ使用する場合 「""」 空の文字列を設定してください。--> 
    <meta-data
    android:name="POPINFO_LOCATION_SOURCES"
    android:value="GPS,Wi-Fi,iBeacon" />

    <!-- Wi-Fi、Bluetooth による来店検知機能を利用する場合 true に設定してください。 -->

    <meta-data
    android:name="POPINFO_USES_ANALYTICS"
    android:value="false" />

    ※ この例では GPS、Wi-fi、iBeacon をすべて使用する設定となります。

     

    2. 権限の追加

    下記の権限を AndroidManifest.xml に追加してください。

    <!-- meta-dataで POPINFO_LOCATION_SOURCESに GPS または Wi-Fi または iBeacon を設定する場合に記述してください --> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <!-- meta-dataで POPINFO_LOCATION_SOURCESに GPS または Wi-Fi を設定する場合に記述してください -->

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

    <!-- meta-dataで POPINFO_LOCATION_SOURCESに iBeacon を設定する場合に記述してください -->
    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

    <!-- GPS または Wi-Fi または iBeacon をバックグラウンドでも利用する場合に記述してください。 ※バックグラウンドでも利用する場合、GooglePlay への申請時に別途バックグラウンド位置情報のための申請が必要となります -->
    <!-- <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> -->

    ※ この例では GPS、Wi-fi、iBeacon をすべて使用する設定となります。

     

    3. バックグラウンドで位置情報を利用する

    バックグラウンドで位置情報へアクセスするために「2 権限の追加」でコメントアウトされていた権限を追加します。

    <!-- GPS または Wi-Fi または iBeacon をバックグラウンドでも利用する場合に記述してください。  ※バックグラウンドでも利用する場合、GooglePlay への申請時に別途バックグラウンド位置情報のための申請が必要となります --> 
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

     

    バックグラウンドで位置情報へアクセスするアプリは、データのアクセスについてアプリ内でユーザーに開示をする必要があります。

    meta-data としてPOPINFO_SKIP_INIT_AGREEMENTを追加し、 false に設定してインフォメーションダイアログを表示してください。

    <meta-data 
    android:name="POPINFO_SKIP_INIT_AGREEMENT"
    android:value="false"

     

    バックグラウンドでの位置情報へのアクセスについて

    Google の位置情報に関するポリシーに変更が入り、バックグラウンドで位置情報へアクセスするアプリは通常の申請とは別に承認を受ける必要ができました。

    参照 : バックグラウンドでの位置情報へのアクセスをリクエストする

    この項の設定は承認を受けるために必要となる 「アプリ内での開示」 について、インフォメーションダイアログを使用して開示の文言を表示する方法となります。

    ※アプリ内での開示に関する要件は 2020年 11月現在のものをベースにしております
    ※文言の内容は res/values/popinfo_strings.xml よりカスタマイズが可能です

  • SDK の設定項目一覧

    FANSHIP SDK に関する設定の一覧となります。

    設定を行う場合は、AndroidManifest.xml の application タグ配下 に meta-data を追加してください。

     

    meta-data 一覧

     

    POPINFO_APP_ID

    • 株式会社アイリッジより発番した FANSHIP のアプリ ID を設定します。(必須)

    POPINFO_MAIN_ACTIVITY_CLASS

    • お知らせ一覧画面からの戻り先 Activity のクラス名を設定します。auto に設定すると、直前に開いていたアプリの画面に戻ります。直前にアプリを開いていなかった場合は、ランチャーから起動する Activity を起動します。

    POPINFO_CALLBACK_CLASS

    • SDK からコールバックを受け取るクラスのクラス名をパッケージ名を含めて設定します。コールバックを受け取るクラスのサンプルは SDK に同梱の PopinfoCallback.java をご覧ください。(省略時はコールバックを受け取りません)

    POPINFO_LOCATION_SOURCES

    • 利用する位置情報の取得方法をカンマ区切りで指定します。
      GPS
       位置連動型送信を使用する場合に指定します。
      Wi-Fi
       Wi-Fi 連動型送信を使用する場合に指定します。
      iBeacon
       iBeacon 配信を使用する場合に指定します。
       指定した種類に応じて一部の permissionの設定は不要になります。
    • 位置情報を利用しない場合、空の文字列を指定してください。
    • 位置情報に関するダイアログ、設定項目等は自動的に非表示になります。(省略時は GPS のみ有効)

    POPINFO_USES_PUSH_ONLY

    • 配信タイプ「Push通知のみ」を使用するかどうかを設定します。
      false または 省略 されている状態では、「Push通知のみ」配信を行っても通知は表示されないため、ご使用になる場合はtrueに設定してください。(省略時 false)
      ※ 「Push通知&一覧表示」「一覧表示のみ」配信は設定値に関わらず動作します。

    POPINFO_SKIP_INIT_AGREEMENT

    • FANSHIP 初回起動時に表示されるインフォメーションダイアログ(位置情報を使用している場合のみ)の表示/非表示を設定します。(省略時 true)
    • 表示= false / 非表示= 省略 または true
    • 初回起動時のオプトインダイアログを任意で表示する場合はこの設定は無効となります。(ver 7.2.0 以降)

    POPINFO_SKIP_PUSH_AGREEMENT

    • FANSHIP 初回起動時に表示されるプッシュ通知許諾ダイアログの表示/非表示を設定します。非表示にした場合、許諾済みとして動作します。(省略時 false)
    • 表示= false / 非表示= 省略 または true
    • 初回起動時のオプトインダイアログを任意で表示する場合はこの設定は無効となります。(ver 7.2.0 以降)

    POPINFO_USES_ANALYTICS

    • サーバーに送信された位置情報を統計的な分析に使用するかどうかを設定します。 Wi-Fi、Bluetooth による来店検知機能を利用する場合は true を設定します。(省略時 false)

    POPINFO_SHOW_SEGMENT_SETTINGS

    • ユーザー属性設定画面を自動的に表示するかどうかを設定します。trueに設定すると、 FANSHIP のユーザー登録完了時および FANSHIP の設定画面にユーザー属性設定画面への遷移を表示します。(省略時 false)
    • 初回起動時のオプトインダイアログを任意で表示する場合はユーザー登録完了時のダイアログ表示は行われません。(ver 7.2.0 以降)

    POPINFO_SHOW_ON_LOCKSCREEN

    • 端末がロック状態の時にお知らせポップアップを表示するかどうかを設定します。 ※ 機種・OS固有の問題により正常に動作しない場合もあります。
    • true に設定すると、端末がロック状態時にお知らせを受信した時、ポップアップをロック画面上に表示させます。※お知らせ内容を確認する場合ロック画面を解除する必要があります。
    • また設定画面にロック画面上にポップアップ通知を行うかどうかの項目を FANSHIP 設定画面に表示します。(省略時 false)

    POPINFO_USES_POPUP_ANDROID_Q_OR_HIGHER

    • Android 10以上の端末でポップアップを表示するかどうかを設定します。
    • true に設定すると、アプリがフォアグラウンドの際にポップアップを表示します。(省略時 false)
    • OS の仕様により、Android 10以上の端末ではバックグラウンド時のポップアップ表示はできませんのでご注意ください。

    POPINFO_DEBUG

    • 各種デバッグ情報を LogCat に出力するかどうかを設定します。※popinfo ID の取得~プッシュ通知受信準備完了(通知受信可能状態)までの処理の結果が画面上に Toastで表示されます。
    • popinfo ID や FCMトークン が正常に取得できているかどうか確認する際にご使用ください。※リリース時は必ず false に変更してください。(省略時 false)

    POPINFO_EVENTACTION_DEBUG

    • イベントトラッキングのデバッグ情報を出力するか設定します。イベントトラッキングが付与された際にキー名を Toast で画面上に表示します。
    • アプリ内メッセージを利用する際、「カスタムイベント」が正常なタイミングで付与されているかなどを確認する際にご使用ください。※リリース時は必ず false に変更してください。(省略時 false)
    • バックグラウンド状態やアプリ内メッセージが表示されている状態だと Toast は表示されません

    POPINFO_SKIP_INIT_BACKGROUND_LOCATION

    • FANSHIP 初回起動時に表示されるバックグラウンド位置情報許諾ダイアログの表示/非表示を設定します。(省略時 false)
    • この設定は Android 11 以上の端末で、アプリが targetSdkVersion 30 以上にしている場合にのみ使用されます

     

    設定サンプル

    ※ 設定のサンプルとなります。上記の<meta-data 一覧> を参考に設定の追加/変更をしてください。

    <!-- FANSHIP meta-data設定 -->
    <meta-data
    android:name="POPINFO_APP_ID"
    android:value="<FANSHIPのアプリケーションIDを設定してください>" />

    <meta-data
    android:name="POPINFO_MAIN_ACTIVITY_CLASS"
    android:value="auto" />

    <meta-data
    android:name="POPINFO_SHOW_SEGMENT_SETTINGS"
    android:value="false" />

    <meta-data
    android:name="POPINFO_DEBUG"
    android:value="false" />

    <!-- 使用する位置情報の取得方法を設定してください。※ PUSH配信のみ使用する場合 「""」 空の文字列を設定してください。-->
    <meta-data
    android:name="POPINFO_LOCATION_SOURCES"
    android:value="GPS,Wi-Fi,iBeacon" />

    <!-- Wi-Fi、Bluetooth による来店検知機能を利用する場合 true に設定してください。 -->
    <meta-data
    android:name="POPINFO_USES_ANALYTICS"
    android:value="false" />

    <!-- 配信タイプ「Push通知のみ」の配信を行う場合は true に設定してください。。-->
    <meta-data
    android:name="POPINFO_USES_PUSH_ONLY"
    android:value="false" />
  • PopinfoApplication を継承できない場合

    別のライブラリで Application クラスを継承していて PopinfoApplication を継承できない場合は下記のようにカスタム Application クラスの onCreate 内で FANSHIPの初期化を行ってください。

    public class YourApplication extends OtherApplication {
        @Override
        public void onCreate() {
            super.onCreate();

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

            ・・・
        }
    }
  • SDK の特定動作のタイミングをアプリ側で把握したい

    PopinfoCallback クラスを使用して、FANSHIP SDK の様々な処理のコールバックを受け取ることができます。
    ※ コールバックタイミングの詳細は javadocの各種メソッド説明 や ログを実装 して確認してください。

     

    下記は、プッシュ通知が受信可能になったタイミングのコールバックを受け取るための実装例になります。

     

    1. 同梱の PopinfoCallback.java ファイルを任意のファイル、クラス名でコピーします。

    (ここでは、src/main/java/jp/iridge/myapp/popinfo/MyPopinfoCallback.java へコピーしたものとします)

     

    2. AndroidManifest.xml の meta-data POPINFO_CALLBACK_CLASS に 1 でコピーした MyPopinfoCallbackクラスを設定します。

    <meta-data 
    android:name="POPINFO_CALLBACK_CLASS"
    android:value="jp.iridge.myapp.popinfo.MyPopinfoCallback" />

     

    3. PUSH通知が受信可能時のコールバック onTokenRegistered() 内で任意の処理を実装します。

    /**
    * FCMトークン (またはRegistrationID) とpopinfoIDの紐付け完了(PUSH通知受信可能)時にコールバックされます。
    *
    * @param context コンテキスト
    * @param popinfoId push受信可能になったpopinfo ID
    */
    public void onTokenRegistered(Context context, String popinfoId) {
    // 任意の処理を実装してください
    }
  • 配信タイプ「Push通知のみ」配信を使用時の処理を行う方法

    下記手順で実装してください。

     

    1

    AndroidManifest.xml の meta-data で下記設定の設定値を true に変更します。

    <!-- 配信タイプ「Push通知のみ」の配信を行う場合は true に設定してください。--> 
    <meta-data
    android:name="POPINFO_USES_PUSH_ONLY"
            android:value="true" />

     

    2

    同梱の PopinfoCallback.java ファイルをアプリモジュール側の任意の場所に任意の名前でコピーし、AndroidManifest.xml の meta-dataで PopinfoCallback クラスを設定します。(ここでは MyPopinfoCallback として パッケージ/popinfo 配下にコピーしたとします)

    <meta-data 
    android:name="POPINFO_CALLBACK_CLASS"
    android:value="パッケージ.popinfo.MyPopinfoCallback" />

     

    3

    コピーした MyPopinfoCallback クラスで Notification(通知エリアの通知)タップ時の処理を下記を参考に実装します。
    ※ 「実装:」部分の処理に関しましてはアプリの仕様に合わせて実装してください。

    public boolean onInfoTapAction(Context context, long id, String src, Intent payload) {
      // 「Push通知のみ」配信かどうかの値をpayloadより取得します
      // "has_detail"キーの値で配信タイプを判定できます(true: Push通知のみ配信以外 false: Push通知のみ配信)
    boolean hasDetail = Boolean.valueOf(payload.getStringExtra("has_detail"));

    // "link_url"キーの値は「Push通知のみ」配信時に設定できる「"URLを開く"から遷移するURL」項目に該当します
    String linkUrl = payload.getStringExtra("link_url");

    // 「Push通知のみ」配信以外の場合
    if (hasDetail) {
    return super.onInfoTapAction(context, id, src, payload);

    // 「Push通知のみ」配信の場合
    } else {

    // 配信時にURLを設定している場合
    if (!TextUtils.isEmpty(linkUrl)) {

    /**************** 実装:(デフォルトサンプル)配信時に設定されたURLを暗黙的インテントで起動します。必要に応じて処理は変更してください。 ****************/
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(linkUrl));
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(intent);

    // 配信時にURLを設定していない場合
    } else {

    /**************** 実装:URLを設定されていない場合の処理をアプリの仕様に合わせて処理を実装してください。 ****************/

    }

    // 通知バーの通知を削除します
    PopinfoUiUtils.clearNotification(context, id);
    return false;
    }
    }
  • FANSHIP SDK 各画面・リソースのカスタマイズ

    各画面のカスタマイズ

    ※注意

    画面クラスの修正は、popinfo-sdk プロジェクト内の画面クラスファイルを直接修正や継承しないで使用してください。アプリケーションモジュール内に popinfo-sdk よりコピーし(クラス名変更可能)編集することを推奨しております。
    これは、popinfo-sdk プロジェクトを直接修正すると、SDK をアップデートする際に画面クラスをアップデートすることが難しくなってしまうためです。 また、各画面クラスで継承している ”PopinfoBase~” クラスは、変更せずにご使用いただくことを推奨しております。

     

    1

    各画面クラスを修正し、独自の画面を作成する場合は、popinfo-sdk/src/配下のパッケージ内にある各種画面クラスとそれに対応するレイアウトファイルをアプリプロジェクトにコピーしていただき、独自処理を実装してください。

     

    2

    作成した独自画面クラスへの遷移制御は popinfo-sdk/res/values/popinfo_values.xml で行います。アプリモジュールの res/values にコピーして変更してください。

    以下、独自のお知らせ一覧画面を作成した場合の遷移先記述例になります。
    ※ コピーしたpopinfo_values.xmlの以下の部分を変更します。パッケージ名を含めたクラス名で記述してください。

    <!-- お知らせ一覧画面 --> 
    <string name="popinfo_class_list">パッケージ名含めた遷移先クラス名</string>

     

    3

    AndroidManifest.xmlに追加した Activity クラスを設定します。

     

    ※各メソッドの詳細につきましては、同梱のpopinfo_javadoc をご確認ください。

     

    FANSHIP 通知音/バイブレーションパターン指定

    • 独自の着信音を設定する場合は、/res/raw/popinfo_alarm.ogg を差し替えてください。
    • 独自のバイブレーションパターンを設定する場合は、@array/popinfo_vibration_pattern(/res/values/popinfo_arrays.xml)を変更してください。
      配列は、バイブレーションOff の時間、ONの時間、OFFの時間、ONの時間…の順にミリ秒単位の数値で設定します。

     

    その他リソースファイルについて

    その他のリソースファイルも通常の Android プロジェクトと同様に修正可能です。アプリプロジェクト内の同フォルダ内にコピーして編集していただくことを推奨しております。

     

  • 通知のカスタマイズ

    ステータスバーのプッシュ通知アイコン指定

    FANSHIP の通知エリアへ表示するアイコンは、@drawable/popinfo_notification_icon をアプリモジュール内で設定してください。

     

    ※注意

    @drawable/popinfo_notification_icon が設定されていない場合のデフォルト動作は、アプリアイコンをステータスバーへ表示するため、端末の OS バージョンや解像度によってはうまく表示されない場合があります。
    解像度別にステータスバー用のアイコンリソースを設定することを推奨しております。

     

    通知チャンネル指定

    Android 8.0以上では、通知チャンネル設定が必須となっております。
    FANSHIP の通知チャンネル名につきましては、1度でも作成してしまうと、アプリアップデートでも変更できないため
    res/values/popinfo_values.xml 内の popinfo_notification_channel_name の値を確認の上リリースしてください。


    デフォルトの FANSHIP が プッシュ通知を受信した時のチャンネル名はInfoとなっております。
    変更する場合は、アプリモジュールの res/values 配下に popinfo_values.xml をコピーして下記の値を修正してください。

    <!-- 通知チャンネル名  
    Android 8.0以上では通知チャンネル設定が必須となっています、FANSHIP ではアプリ設定画面に表示されるチャンネル名を'Info'に設定してます。

    チャンネル名の変更が必要な場合、値を変更してください。 (最大40文字)

    ※ OSのNotificationChannelの仕様上一度でも作成するとアプリアップデートでも変更できません。 -->

    <string name="popinfo_notification_channel_name">Info</string>

     

    プッシュ通知受信時の通知エリア(Notification)のカスタマイズ方法

    下記手順で実装してください。

     

    1. res/values/popinfo_values.xmlをアプリプロジェクトの同位置にコピーし、通知カスタマイズ設定を有効にします。

    <!-- popinfoのNotificationを使用せず、独自にカスタマイズして表示する場合はtrueに変更してください。(true=Notificationカスタマイズ有効 false=Notificationカスタマイズ無効) --> 
    <bool name="popinfo_notification_customize_enabled">true</bool>

     

    2. 同梱の PopinfoCallback.java をアプリプロジェクトの任意の名前(ここではMyPopinfoCallbackとします)で任意のパッケージに配置し、AndroidManifest.xml に設定します。

    (コールバッククラスの詳細は「SDK の特定動作のタイミングをアプリ側で把握したい」をご確認ください。 )

    <meta-data 
    android:name="POPINFO_CALLBACK_CLASS"
    android:value="パッケージ名.MyPopinfoCallback" />

     

    3.

    上記 PopinfoCallback クラス内の onNotificaitonAppeared メソッドの説明を参考に独自の Notification クラスを実装し返却します。
    PopinfoCallback クラスにサンプルコードもコメントアウトされているので参考に実装してください。
    ※ 通知カスタマイズを有効にするとデフォルトの FANSHIP が指定しているチャンネルは削除されますので、通知チャンネル登録はアプリ内の任意のタイミングで必ず実装してください。

    /**
     * PUSH通知受信時にpopinfoがNotificationを作成する直前のタイミングでコールバックされます。<br>
     * Notificationをカスタマイズしたい場合、独自に作成したNotificaitonクラスを返却してください。<br>
     * ※ res/values/popinfo_values.xmlのpopinfo_notification_customize_enabledをtrueに変更することで、このメソッドがコールされるようになります。<br>
     * Notificationカスタマイズする際、下記をご確認ください。<br>
     * 1. タップ時の処理は引数のpendingIntentをセットしてください。タップ時のアクションを制御する場合、 同クラス内のNotificationタップ時制御用メソッドのonInfoTapAction()をご使用ください。<br>
     * 2. 通知チャンネルの設定は、任意のタイミングで作成・登録処理を実装してください。(popinfoのチャンネルIDはpopinfo_notificationとなってます。)
     *
     * @param context コンテキスト
     * @param msgId メッセージID
     * @param popupMsg PUSH通知ポップアップメッセージ
     * @param icon 配信アイコン
     * @param pendingIntent popinfo PendingIntent
     * @return Notificationクラス
     */
    public Notification onNotificaitonAppeared(Context context, String msgId, String popupMsg, Bitmap icon, PendingIntent pendingIntent){
        return 作成したNotificationクラス;
    }

     

    プッシュ通知受信時の通知エリア(Notification)を複数件表示する方法

    複数件表示させる場合、下記手順で設定してください。

     

    1. res/values/popinfo_values.xml をアプリプロジェクトの同位置にコピーし、Notification の上書き設定を変更します。

    <!-- Notificationの上書き設定 -->
    <!-- popinfoのNotificationは、デフォルトで最新の通知1件のみ表示されます。最新の通知を上書きしない場合に変更してください。(true=最新で上書き false=上書きしない) -->
    <bool name="popinfo_notification_multiple_enabled">true</bool>

     

  • カスタムイベント(独自イベント)の実装

    カスタムイベント(独自イベント)は、アプリ上でのユーザーの挙動などを「イベント」(key値とvalue値)という形で記録し、FANSHIP サーバーに送信して蓄積することができる仕組みです。


    カスタムイベントを使用する場合は、次のメソッドを適宜必要な箇所で呼び出してください。
    ※記録されたイベントは1時間周期でサーバー側へ送信されます。電波の悪い場所等で送信に失敗した場合は、削除されず、次の送信タイミングで同時に送信されます。
    ※端末が省電力状態などの場合、周期がずれる可能性があります

    // カスタムイベントのkey名とそれに対応するvalue 値を指定します。
    // カスタムイベントvalue値は、name**(必須)**とvalue(null の場合は空("")扱い)のセットで構成されます。
    // カスタムイベントvalue値は、複数の組み合わせて使用できます。
    // カスタムイベントvalue値がnullの場合、空("")と扱われます。
    List<PopinfoEventItem> values = new ArrayList<PopinfoEventItem>();
    values.add(new PopinfoEventItem("testName1", "testVal1"));
    values.add(new PopinfoEventItem("testName2", "testVal2"));

    Popinfo.trackEvent(this, "キー名", values); // this はContext、values がnull なら空("")として扱われます

    ※各メソッドの詳細につきましては、同梱のpopinfo_javadoc をご確認ください。

     

     

  • ユーザー属性の設定

    ユーザー属性設定画面の表示

    属性配信をご利用になる場合で、任意のタイミングでユーザー自身が属性を設定する画面を呼び出す場合は、次のメソッドを呼び出します。

     

    // 表示できた場合はtrue、ユーザー登録未完了などで表示できなかった場合はfalseを返します。
    boolean ret = PopinfoUiUtils.showSegmentSettings(this); // this はContext

     

    ユーザー属性の変更

    属性配信をご利用になる場合で、ソースコードから直接ユーザー属性を変更する場合は、次のメソッドを呼び出します。
    使用可能なカテゴリ ID、属性 ID につきましては、配信管理画面からご確認ください。
    また、このメソッドは内部で同期通信を行います。メインスレッドをブロックしますので、バックグラウンドで呼び出す等、適宜ご配慮ください。

    // 成功時はtrue、失敗時はfalseを返します。またthisはContextになります。
    // 属性を設定します。
    boolean ret = PopinfoUtils.setSegments(getApplicationContext(),
                        new HashMap<String, String[]>() {
                            {
                                put("カテゴリID", new String[]{"属性ID"}); 
                                put("カテゴリID", new String[]{"属性ID", "属性ID"});
                            }
                        });
    
    // 属性を解除します。
    boolean ret = PopinfoUtils.setSegments(getApplicationContext(),
                        new HashMap<String, String[]>() {
                            {
                                put("カテゴリID", new String[]{});
                                put("カテゴリID", new String[]{});
                            }
                        });

     

    ※注意

    FANSHIP SDK ver 7.2.0 より、属性の設定・解除を一括で行えるようになりました。
    以前の 1つずつ設定する方法(PopinfoUtils.setSegments(Context, String, String[]) )は非推奨となりますため、利用しております場合は一括の方法に変更してください。

     

    ユーザー属性の取得

    属性配信をご利用になる場合で、ソースコードから設定されているユーザー属性の値や情報を取得する場合は次のメソッドを呼び出します。

    // this はContextになります。
    
    // ユーザーが設定したユーザー属性の値や情報を取得します。
    ArrayList<HashMap<String, String>> PopinfoUtils.getSegments(this);
    
    // 利用中でないユーザー属性の情報も含めて取得します。
    ArrayList<HashMap<String, String>> PopinfoUtils.getSegmentsAll(this);
    
    /*
    ※取得したMap値は以下を参考にご使用ください。
    key_id – カテゴリID
    key_name - カテゴリ名
    value_id – 属性ID
    value_name – 属性名
    is_default – 属性のデフォルト値
    is_set – 属性を利用中かどうか
    is_multiple - 複数選択をできる属性かどうか
    */
  • アプリ内メッセージのカスタマイズ

    SDK ver 7.3.0 より、アプリ内メッセージのコールバックに変更が入りました。

    SDK ver 7.3.0 未満をご使用の場合のサンプルコードにつきましては「こちら」をご確認ください。

     

    アプリ内メッセージのコールバックを受け取る

    コールバッククラスを利用することでアプリ内メッセージの処理をアプリ側で受け取ることができます。(コールバッククラスの詳細は「SDK の特定動作のタイミングをアプリ側で把握したい」をご確認ください )

    <meta-data
        android:name="POPINFO_CALLBACK_CLASS"
        android:value="パッケージ名.MyPopinfoCallback" />

     

    画面遷移のサンプル

    アプリ内メッセージのボタンが押された際に受け取った URL から画面を遷移するサンプルです。
    このサンプルでは PopinfoInappMessageView をカスタマイズした MyPopinfoInappMessageView というクラスを使用しています。(各画面のカスタマイズ方法については 「こちら」をご確認ください)

    ※アプリ独自の遷移を行う際は事前にカスタムURIスキームの設定が必要となります。

    public class MyPopinfoInappMessageView extends PopinfoBaseInappMessageView {
    
        ・・・
    
        /**
         * アプリ内メッセージのボタンが押された際の動作
         *
         * @param actionUrl 設定されている URL
         */
        @Override
        protected void onInappMessageTapAction(String actionUrl) {
            try {
                Uri uri = Uri.parse(actionUrl);
                Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(intent);
            } catch (ActivityNotFoundException e) {
            }
        }
    
        ・・・
    }
    

     

    独自判断のサンプル

    アプリ側で独自の要素を含むユーザーに対し、アプリ内メッセージを表示させないようにするというサンプルです。
    このアプリ内メッセージは作成する際にカテゴリを指定しております。

    [MyPopinfoCallback.java]

    public boolean onInappMessageAppeared(Context context, String event, String category, PopinfoInappMessage inappMessage) {
        // アプリで独自に保存している要素を取得 
        // ※サンプルのため、仮の文字列です
        String originalCategory = "xxxxxxx";
    
        // 該当カテゴリに合致するユーザーにはアプリ内メッセージを表示させないようにする
        if (originalCategory.equals(category)) {
                return false;
        }
    
        return true;
    }
    

     

    メッセージ校閲のサンプル

    アプリ内メッセージを表示する直前に、メッセージ内容の校閲を行うサンプルです。
    このサンプルではアプリ内メッセージに{$user}という内容を指定し、アプリ側で置換をする処理を行っております。

    [MyPopinfoCallback.java]

    public boolean onInappMessageAppeared(Context context, String event, String category, PopinfoInappMessage inappMessage) {
            // アプリで実際に表示をさせる要素を取得
            // ※サンプルのため、仮の文字列を入れております
            String name = "xxxxxxx";
            inappMessage.htmlString = inappMessage.htmlString.replace("{$user}", name);
    
            return true;
    }
    

     

    デバッグモードについて

    AndroidManifest.xml の meta-data に POPINFO_EVENTACTION_DEBUG を追加することで、イベントトラッキングが付与された際にキー名を Toast で画面上に表示します。
    (詳細は「SDKの設定項目一覧」よりご確認ください。)

    <meta-data
        android:name="POPINFO_EVENTACTION_DEBUG"
        android:value="true" />
    

     

    ・Toast 表示形式

    <キー名> matched. (現在の1日の表示回数,1日の最大表示回数)(トータル表示回数、トータル最大表示回数)
    

    ※イベントキー名「app.top」」 がマッチした際の例として、下記のように表示され、- は無制限を表します。

    <app.top> matched. (1,5)(1,-)
  • ウィジェット機能を使用する

    下記のコードを AndroidManifest.xml の applicationタグ配下 に追加してください。

    <!-- ウィジェット機能を使用する場合は追加してください。 -->
    <receiver android:name="jp.iridge.popinfo.sdk.PopinfoWidget">
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
        </intent-filter>
    
        <meta-data
            android:name="android.appwidget.provider"
            android:resource="@xml/popinfo_widget" />
    </receiver>
    
  • FANSHIP SDKのアップデートについて

    ※注意

    独自に機能をカスタマイズしている場合につきましても、SDK 内のファイルをアプリプロジェクトへコピーし編集している場合に限り、以前の状態を維持したアップデートが可能となっております。
    FANSHIP SDK 内ファイルを直接編集している場合は、カスタマイズしたレイアウト、画面クラス、各種設定を維持できませんのでご注意ください。

     

     

    旧バージョンからのアップデートにおける主な共通確認事項

    • ver 7.3.0 以降、アプリ内メッセージのコールバックについて変更が入りました。
      • ver 7.3.0 で削除されたコールバック
        • onInappMessageTapAction

        • onEventActionTrigger

        • onInappMessageUpdate

      • ver 7.3.0 で追加されたコールバック

        •  onInappMessageAppeared

      • アップデートの際、削除されたコールバックを使用していた場合の変更方法についてはこちらをご確認ください。

        • onInappMessageTapAction を使用していた場合

          • SDK に新たにアプリ内メッセージ用のクラスファイル(sdk/PopinfoInappMessageView.java)が追加されました。このクラスをカスタマイズすることで、コールバッククラスで使用してい onInappMessageTapAction をそのまま利用できます。

          • ※画面のカスタマイズ方法については「各画面のカスタマイズ」を参考にカスタマイズしてください。

        • onEventActionTrigger を使用していた場合

          • 新たに追加されたコールバック onInappMessageAppeared をご利用ください。

            コールされるタイミングはアプリ内メッセージ表示の直前となり、false を返却することでアプリ内メッセージの表示を取りやめることができます。

        • onInappMessageUpdate を使用していた場合

          • 新たに追加されたコールバック onInappMessageAppeared をご利用ください。
            このコールバックではアプリ内メッセージの内容を取得しております。
            取得したアプリ内メッセージの内容を置換することで表示される内容も置き換えることができます。

      • アプリ内メッセージのサンプルコードにつきましては、「こちら」をご確認ください。

         

    • ver 7.2.0 以降、SDK 初回起動時のオプトインダイアログを任意で表示することが可能になりました。
      任意で表示をする場合、SDK 開始時のメソッド Popinfo.start(context, boolean) の引数に true を設定してください。
      Popinfo.start(context) でコールした場合や、 Popinfo.start(context, boolean) の引数に false を設定した場合、ver 7.2.0 以前と同じ動作となりオプトインダイアログが自動で表示されます。



      オプトインダイアログを任意で表示する場合の変更点
      1. meta-data の設定の動作が一部変更されます。

      POPINFO_SKIP_INIT_AGREEMENT : false とした場合でも初回起動時にインフォメーションダイアログが表示されません。
      POPINFO_SKIP_PUSH_AGREEMENT : true とした場合でも初回起動時に PUSH 通知は許諾済みにはなりません。
      POPINFO_SHOW_SEGMENT_SETTINGS : true とした場合でも、初回起動時にユーザー属性設定ダイアログは表示されません


      2. 「インフォメーションダイアログ」「PUSH 許諾ダイアログ」「位置情報許諾ダイアログ」を任意で呼び出すことが可能となります。

      Popinfo.startInformationOptin(Activity activity)
      Popinfo.startPushOptin(activity)
      Popinfo.startLocationOptin(Activity activity)
      

      ※このメソッドでダイアログを表示できるのは一度のみとなります。ユーザーが許諾を選択した後に再度このメソッドを呼び出してもダイアログは表示されません
      ※位置情報許諾ダイアログは位置情報の権限の状態によってはダイアログが表示されないことがあります(システムの挙動となります。既に権限を許諾済みだった場合や、既に「次回から表示しない」設定となっていた場合は表示されません)
      ※以前のバージョンでの初回起動を含む、自動でのオプトインダイアログ表示を終えたユーザーに対してはこのメソッドを呼び出してもダイアログは表示されません


      3. 2 のダイアログ終了時のコールバックが追加されました。

      PopinfoCallback.onInformationOptInEnded(context)
      PopinfoCallback.onPushOptInEnded(context)
      PopinfoCallback.onLocationOptInEnded(context)
      

      ※コールバッククラスの詳細は「SDK の特定動作のタイミングをアプリ側で把握したい」をご確認ください 

    • ver 7.2.0 以降、ユーザー属性を一括で変更するメソッドが追加されました。
      以前の 1つずつ設定する方法(PopinfoUtils.setSegments(Context, String, String[]) )は非推奨となりますため、利用しております場合は「ユーザー属性の変更」を参考に変更してください
    • ver7.1.0 以降、フォアグラウンドのみで位置情報(GPS/Wi-Fi/iBeacon)の利用を行えるようになりました。
      フォアグラウンドのみで利用する場合は AndroidManifest.xml  android.permission.ACCESS_BACKGROUND_LOCATION 権限を削除してください。
      この権限を削除している場合、SDK は OS バージョンに関係なくバックグラウンドで位置情報の取得を行わなくなります。

    • ver7.0.0以降、targetSdkVersion 30 以上で組みこんだアプリについて、Android 11 以上の端末を対象に位置情報の許諾の後に「バックグラウンド位置情報の許諾」というダイアログを表示するようにしております。
      このダイアログはレイアウトとして popinfo-sdk/res/layout/popinfo_background_location_dialog.xml を使用しております。
      ver7.0.1ではデフォルトで画像によるダイアログを表示しておりますが、文章のみの表示も可能なので必要な場合はこのファイルを編集してください。
      また、このダイアログは「SDKの設定項目一覧」 POPINFO_SKIP_INIT_BACKGROUND_LOCATION で非表示にすることが可能となっております。

    • ver6.0.1以降、設定画面でAndroid 10以上の場合に表示される「ヘッドアップ通知を維持する」の項目をデフォルトで非表示となるように変更しました。
      こちらは機種・OS固有の問題により正常に動作しない場合があるため、使用する場合はご注意ください。

    • ver6.0.0以降、設定画面の popinfo-sdk/res/xml/popinfo_prefs.xml を廃止しました。
      カスタマイズをしている場合、 popinfo-sdk/res/layout/popinfo_settings.xml をコピーして変更してください。

    • ver6.0.0以降、Popupクラスの初期化処理から requestWindowFeature を削除しました。
      Popupクラスのカスタマイズをしている場合、合わせて requestWindowFeature の記述を削除してください。

    • ver6.0.0以降、Android 10以上の端末でヘッドアップ通知をデフォルトで表示させるため、組み込み時の通知チャンネルの重要度を 4 に設定しています。
      Android 10以上の初期値設定用として、popinfo-sdk/res/values/popinfo_values.xml  popinfo_notification_channel_importance_q_or_higher を追加しておりますので、Android 9以下の場合と使い分けてください。
      ※ Notificationのカスタマイズを行っている場合は、この影響を受けません

    • ver5.0.2以降、Android Plugin for Gradleバージョンのサポート環境引き上げに伴い
      popinfo-sdk/res/layout/popinfo_list.xml(お知らせ一覧レイアウト) の一部コンポーネントの ID を変更しました。
      お知らせ一覧レイアウトをカスタマイズしていてビルド時にLintエラーが出た場合は、下記の新バージョンのIDに変更してください。

    [旧バージョン]
    android:id="@+id/android:list"
    android:id="@+id/android:empty"
    
    [新バージョン]
    android:id="@android:id/list"
    android:id="@android:id/empty"
    

     

    • Android Plugin for Gradleバージョン毎にビルドの設定が変更されているため、
      popinfo-sdk/src/build.gradle にはサポート範囲内の各バージョンに最適な設定がコメントアウトされておりますのでご確認ください。

    • 初期化メソッド2種(Popinfo.registerLifecycleCallbacks(Application application)、Popinfo.registerPopinfoReceiver(Application application))が廃止されました。代わりに Popinfo.init(Application application) をご使用ください。

    • ver4.x.x以降、FCMトークン はアプリモジュール側で取得して FANSHIP SDKへ設定する形式となります。
      ※ PopinfoApplicationクラスの設定方法も変更になっておりますのでご注意ください。

    • BLU300の機能は廃止されています。

    • FANSHIP SDKはAndroid Studioライブラリプロジェクトに変更されています。

    • サポートライブラリ「android-support-v4(rev.26.1.0以上)」の追加が必須となっています。

    • Android 8.0以上の端末では、FANSHIP 設定画面項目の「通知エリア設定」が追加されています。
      ※端末設定のアプリ通知チャンネル設定画面へ遷移します。

    • 特定の旧バージョンからアップデートされた場合、FANSHIP 設定画面項目の「通知エリアに通知」の項目が廃止されています。通知受信時に通知エリアには必ず通知されるようになります。

    • 特定の旧バージョンで表示されていた、FANSHIP 設定画面項目の「ポップアップを表示」「サウンドを再生」「バイブレーション」の項目はデフォルトで非表示になっています。

    • 特定の旧バージョンで表示されていた、FANSHIP 設定画面項目の「保存するお知らせの数」「位置情報の取得間隔」設定を廃止しました。削除された設定項目は組み込み時に限り、値を設定することができます。

    • 特定の旧バージョンで表示されていた、初回起動時のインフォメーションダイアログの表示・非表示のデフォルト動作が変更されました。

    • コールバッククラスの各種メソッドの名称変更(ver2.x~ver3.5.0未満からのアップデート時)・新規追加されました。必要に応じて追加、変更を行ってください。
      ※ コールバックメソッドの種類/詳細につきましては、同梱のPopinfoCallback.java または 同梱の popinfo_javadoc の PopinfoBaseCallback クラスの項目をご確認ください。

     

    SDK ver4.0.0未満からのアップデートについて

    ver3.x.x以前からver4.x.x以上へのアッデート後は、FCM を使用したプッシュ配信になります。
    変更点が多いため再度手順に従い導入し直すことを推奨しておりますが、アップデートが必要な場合はサポート担当までお問合せ下さい。