• Google Play のデータ セーフティ セクションの情報提供について

    Google Play のデータ セーフティ セクションの情報提供について

    すべてのデベロッパーは、Google Play で公開するアプリでユーザーデータをどのように収集、処理するかを
    Google Play Console でフォームに入力し、アプリのプライバシーとセキュリティの方針を Google に申告し、
    そのデータを暗号化などのセキュリティ保護対策によってどのように保護するか、詳細を示す必要があります。

    申告内容については、アプリデベロッパの責任において、法律家やその他の専門家にご相談のうえで
    ご判断ください。

     

    審査について

    アプリのデータ セーフティ宣言の正確性と完全性の検証を対象としているとは限りません。
    サードパーティのツールを使用してアプリのセキュリティ管理を診断している場合でも、アプリの  Play ストアの
    掲載情報で完全かつ正確な申告を行うことについては、デベロッパーが単独で責任を負います。

     

    FANSHIPにおいて収集されるデータ

    FANSHIPで取得するデータは、次の表のとおりです。

    使用目的は FANSHIP SDK のデフォルト実装を前提とした場合を想定しています。
    アプリ側の実装に伴い、データの種類と用途に対してご判断ください。 
     

    カテゴリ データの種類 説明 収集されるデータ 使用目的
    位置情報 おおよその位置情報 3 平方キロメートル以上の地域でのユーザーまたはデバイスの物理的な位置情報
    (例: ユーザーがいる都市、Android の ACCESS_COARSE_LOCATION 権限によって提供される位置情報)。
    オプション利用時は収集可能
    (※1)
    ・分析
    ・デベロッパーによる情報伝達
    正確な位置情報 3 平方キロメートル未満の地域内にあるユーザーまたはデバイスの物理的な位置情報(例: Android の ACCESS_FINE_LOCATION 権限によって提供される位置情報)。 オプション利用時は収集可能
    (※1)
    ・分析
    ・デベロッパーによる情報伝達
    個人情報 名前 ユーザーの姓名、ニックネームなど、ユーザーが自身を表記する方法。 オプション利用時は収集可能
    (※2)
    ・分析
    ・デベロッパーによる情報伝達
    アカウント管理 メールアドレス ユーザーのメールアドレス。 オプション利用時は収集可能
    (※2)
    ・分析
    ・デベロッパーによる情報伝達
    個人識別情報 特定できる個人に関連する識別子(アカウント ID、アカウント番号、アカウント名など)。 オプション利用時は収集可能
    (※2)
    ・アプリの機能
    ・分析
    ・デベロッパーによる情報伝達
    住所 ユーザーの住所(送付先住所や自宅の住所など)。 オプション利用時は収集可能
    (※2)
    ・分析
    ・デベロッパーによる情報伝達
    電話番号 ユーザーの電話番号。 オプション利用時は収集可能
    (※2)
    ・分析
    ・デベロッパーによる情報伝達
    人種、民族 ユーザーの人種や民族に関する情報。 オプション利用時は収集可能
    (※2)
    ・分析
    ・デベロッパーによる情報伝達
    政治信条、宗教 ユーザーの政治信条または宗教に関する情報。 オプション利用時は収集可能
    (※2)
    ・分析
    ・デベロッパーによる情報伝達
    性的指向、性同一性 ユーザーの性的指向や性同一性に関する情報。 オプション利用時は収集可能
    (※2)
    ・分析
    ・デベロッパーによる情報伝達
    その他の個人情報 生年月日、従軍経験などのその他の個人情報。 オプション利用時は収集可能
    (※2)
    ・分析
    ・デベロッパーによる情報伝達
    財務情報 クレジット カード、デビットカード、銀行口座番号 クレジット カード番号など、ユーザーの金融口座に関する情報。 なし  
    信用情報 ユーザーの信用に関する情報(信用履歴、クレジット スコアなど)。 なし  
    その他の財務情報 その他の財務情報。 なし  
    健康、フィットネス 健康に関する情報 医療記録や症状など、ユーザーの健康に関する情報。 なし  
    フィットネスに関する情報 運動やその他の身体活動など、ユーザーのフィットネスに関する情報。 なし  
    メッセージ メール ユーザーのメール(メールの件名、送信元、宛先、メールの内容など)。 なし  
    SMS、MMS のメッセージ ユーザーのテキスト メッセージ(送信元、宛先、メッセージの内容など)。 なし  
    その他のアプリ内メッセージ その他の種類のメッセージ(インスタント メッセージ、チャット コンテンツなど)。 なし  
    写真、動画 写真 ユーザーの写真。 なし  
    動画 ユーザーの動画。 なし  
    音声ファイル 音声などの録音 ボイスメールやサウンド レコーディングなどのユーザーの声。 なし  
    音楽ファイル ユーザーの音楽ファイル。 なし  
    その他の音声ファイル ユーザーが作成した、またはユーザー提供のその他の音声ファイル。 なし  
    ファイル、ドキュメント ファイル、ドキュメント ユーザーのファイルやドキュメント、またはファイルやドキュメントに関する情報(ファイル名など)。 なし  
    カレンダー カレンダーの予定 ユーザーのカレンダーからの情報(予定、予定のメモ、参加者など)。 なし  
    連絡先 連絡先 ユーザーの連絡先に関する情報(連絡先の名前、メッセージの履歴や、ユーザー名、連絡間隔、連絡頻度、交流期間、通話履歴といったソーシャル グラフ情報など)。 なし  
    アプリのアクティビティ ページビュー、アプリ内のタップ ユーザーがアプリをどのように操作しているかに関する情報(ページビュー数、タップの画面座標など)。 あり
    (※3)
    ・分析
    ・デベロッパーによる情報伝達
    アプリ内の検索履歴 ユーザーがアプリ内で検索した内容に関する情報。 なし  
    インストール済みのアプリ ユーザーのデバイスにインストールされているアプリに関する情報。 なし  
    その他のユーザー作成コンテンツ この一覧、または他のセクションに記載されていない、その他のユーザー作成コンテンツ(ユーザーの BIOS、メモなど)。 なし  
    その他の操作 この一覧に記載されていない、その他のユーザー アクティビティやアプリ内操作(ゲームプレイや高評価など)。 任意のアクティビティについて収集可能
    (※4)
    ・分析
    ・デベロッパーによる情報伝達
    ウェブ閲覧 ウェブ閲覧履歴 ユーザーがアクセスしたウェブサイトに関する情報。

    オプション利用時は収集可能

    (※5)

    ・分析
    アプリの情報、パフォーマンス クラッシュログ アプリのクラッシュ ログデータ(アプリがクラッシュした回数、スタック トレース、クラッシュに直接関係するその他の情報など)。 なし  
    診断 アプリのパフォーマンスに関する情報(バッテリー駆動時間、読み込み時間、レイテンシ、フレームレート、技術的な診断など)。 なし  
    その他のアプリのパフォーマンス データ ここに記載されていないその他のアプリのパフォーマンス データ。 あり
    (※6)

     

    ・分析

     

    デバイスまたはその他の識別子 デバイスまたはその他の識別子 各デバイス、ブラウザ、アプリに関連する識別子(IMEI 番号、MAC アドレス、Widevine デバイス ID、Firebase インストール ID、広告 ID など)。 あり
    (※7)

     

    ・アプリの機能
    ・分析
    ・デベロッパーによる情報伝達

     


    ※1:位置情報を送信するように設定している場合は、それに応じて回答してください。
    ※2:会員情報連携機能を利用している場合は、それに応じて回答してください。
    ※3:アプリ起動、インストール、プッシュ開封などのデータなどが含まれます。
    ※4:イベントトラッキング機能を利用している場合はそれに応じて回答してください。
    ※5:WebView版イベントトラッキング機能を利用している場合は、それに応じて回答してください
    ※6:サーバーへのアクセスログに、機種名、OSバージョンなどが含まれます。
    ※7:FANSHIP SDK はアプリインストール時などにpopinfo IDという一意なIDを割り当てます。

  • SDKはどこからダウンロードできますか?

    最新版SDK

    管理画面にログインし、「SDK 及び 資料ダウンロード(最新版)」からダウンロードいただけます。

    SDK_download.png

     

    過去のSDK

    ご希望のSDKバージョン・OSなどの情報を添えて、サポートまでお問い合わせください。

  • ユーザーの位置情報はいつ、どのように取得していますか?

    位置情報を取得する方法およびタイミングについては、OSごとに以下の通りです。

     

    iOS

    • ネットワーク測位モードで組み込んだ場合(検知頻度:低)
      • 大幅位置移動検出時
      • 滞在、移動開始検出時
    • 定期GPSモードで組み込んだ場合(検知頻度:高)
      • 大幅位置移動検出時
      • 滞在、移動開始検出時
      • 5分に1回

     

    Android

    • 5分に1回 ※組込時、SDKで任意に指定可能
    • アプリがフォアグラウンドになったタイミング

    ほか、アプリをターミネートしてから再度起動した場合もGPS・セルベースの測位を得る事ができます。

     

    💡 大幅位置移動検出時とは

    通信時に基地局からの情報を元に、位置情報取得しております。
    例として、Aという基地局の通信から、Bという基地局の通信に変わった場合に取得されます。

    💡 滞在、移動開始検出時とは

    「緯度経度、到着時間、出発時間」をiOSが知らせてくれる仕組みから位置情報を検知しております。
    滞在の具体的な基準値やロジック等はOS側で、開示されているものではございませんのでご了承ください。

     

    位置情報をFANSHIPサーバーへ送るタイミングはこちらを参照ください。
    また、取得した緯度経度情報は、外部データ連携機能を利用することで、お客様の環境へ連携することが可能です。

  • iOS13 - アプリケーションに対する位置情報の使用許可

     

    iOS 13 以降、インストール時に表示される「位置情報許諾ダイアログ」について、位置情報の許諾ステータスの内容と遷移が変更されたため、弊社検証用アプリ を用いて確認した内容を掲載します。

     

    (1)「常に許可」の削除

    これまでは、位置情報の利用許可にあたって、ユーザーに対して「常に許可」「許可しない」「このAppの使用中のみ許可」の3つの選択肢が提示されましたが、iOS 13 からは、「常に許可」が削除され、かわりに「1度だけ許可」が追加されました。

    (2) 段階的権限昇格

    これまでは、Appが位置情報を利用する際に Appのインストール直後からユーザーに「常に許可」を選択肢として提示できるようになっていましたが、iOS 13 からは、「暫定的に『常に許可』」という内部状態を経由することで、はじめて(暫定ではない)「常に許可」の状態(位置情報利用認可)を獲得できるようになります。

     

    __________________03.jpg

     

     

    位置情報使用許可における「1度だけ許可」について

    Appを起動してから終了するまでの期間が「1度だけ」が指す範囲となります

     

     

     

  • 許諾ダイアログとアプリ内メッセージの表示が被ってしまいます(iOS)

    許諾ダイアログに応答したあとに同じ画面でアプリ内メッセージ表示をする制御は難しいため、
    「許諾ダイアログが出ているときは、アプリ内メッセージを表示しない」対応をお勧めします。

    // 通知が許可されているかどうかを確認
    UNUserNotificationCenter.current().getNotificationSettings { (settings) in
        switch settings.authorizationStatus {
        case .authorized:
            // 通知が許可されている場合
            break
        case .denied:
            // 通知が拒否されている場合
            break
        case .notDetermined:
            // 通知許諾状態が未定の場合
            break
        }
    }

    記載箇所については 組込みガイド の「各種機能 > アプリ内メッセージ > デリゲートメソッドについて」を参考にしてください。

  • 管理画面からSDKダウンロードサイトにアクセスできず、ダウンロードができません。

     

    SDK 及び 資料ダウンロード(最新版)」にアクセスできず、以下のような画面が表示された場合、
    お手数ですが こちらのURL にアクセスいただき、ダウンロードをお願いいたします。

     

    SDK___________.png

     

    上記URLへアクセスできない場合、お客様の環境でインターネットへのアクセス制限を掛けられている可能性がございます。

    恐れ入りますが、社内ネットワークのアクセス制限のご確認をお願いいたします。

     

    また、アクセスできない場合、お問合せいただければ最新のSDKファイルをお送りすることも可能です。フォーム・またはメールにてご依頼ください。

  • アプリ内お知らせ(コンテンツ)の表示件数について教えてください。


    SDKのお知らせ一覧の表示件数はSDKの設定値で変更できます。
    初期値は SDKのバージョンにより異なりますので、以下の表をご確認ください。
    ご希望にあわせて、適宜変更してください。

    SDKバージョン Android iOS
    8.0.1~現行 1,000件 1,000件
    8.0.0以前 1,000件

    100件


    設定した数値に達した時点で、古いお知らせから表示されなくなり、非表示となります。
    非表示となったお知らせは端末内からも削除されます。
    例えば、100件の設定をしており、10件の設定に変更した場合は、90件のお知らせが削除されます。
    そのため、再度100件に設定を戻しても過去の90件お知らせは再取得されません。

     

    変更する際は、以下ファイルをご確認ください。
    また、反映させるにはアプリのアップデートが必要となります。


    Android

    /popinfo-sdk/res/values/popinfo_values.xml ファイル内

    <string name="popinfo_messages_num_default">1000</string>

     

    iOS

    /lib/PopinfoConfiguration.m ファイル内

    int const popinfoMessagesMax = 1000;
  • カスタムイベントとWebView版イベントトラッキングには文字制限がありますか?

    カスタムイベントの文字制限について

    カスタムイベントのkeyに設定する値(value)について、個数の上限はありませんが、文字数の制限があります。

    イベント送信時に value は name=value&name2=value2 のように、連結した形で文字列に変換しており、 =& も文字数としてカウントします。

     

    例)イベント名が app.top 、value として screen に home と、 code に abc という 2 つの value を付与している場合

    • key: app.top (7文字とカウント)
    • value: screen=home&code=abc (20文字とカウント)

     

    OSごとの valueに指定できる文字の制限事項につきましては、以下の通りです。

    iOS

    • キー名は、英数字([a-zA-Z0-9])、アンダースコア(_)、ピリオド(.)、ハイフン(-)のみ使用できます。
    • キー名の先頭にアンダースコア(_)は使用できません。
    • キー名が nil や空文字の時は記録できません。
    • 文字数制限は、キー名が 32 文字、キーに対する値はトータルで 512 文字 です。

     

    Android

    • イベントkeyに「 _ 」アンダースコアから始まる文字列は使用不可能。
    • イベントkeyの使用可能文字は [0-9a-zA-Z]_-. になります。
    • イベントvalue値はnameとvalueで構成され、nameは必須でvalueはnullの場合は空として扱われます。
    • またvalue値はURLエンコードしてから送信します。
      • 例)URLエンコード前:a=あ&b=い URLエンコード後:a=%E3%81%82&b=%E3%81%84
    • 文字数制限は、キー名が 64 文字、キーに対する値はトータルで 500 文字 です。

     

    各組み込みガイド
    iOS:各種機能 > イベントトラッキング
    Android:各種機能 > カスタムイベント

     

    WebView版イベントトラッキングの文字制限について

    WebView版イベントトラッキングには、以下の制限があることにご注意ください。

    • キーと値はそれぞれstring型で指定する必要があります。
    • キーと値の合計文字数は2,048文字以下である必要があります。
      • 例){"key1:"value1", "key2":"value2"}を指定する場合、
        "key1=value1&key2=value2"の文字数が2,048文字以下である必要があります。
      • 合計文字数が超過している場合はイベントが送信されません。
    • キーと値について、Android、iOSそれぞれで異なる文字制限はありません。

     

    なお、イベント名(shop.addCart)については下記の制限があります。

    • 英数字([a-zA-Z0-9])、アンダースコア(_)、ピリオド(.)、ハイフン(-)のみ使用できます。
    • 先頭にアンダースコア(_)は使用できません。
    • イベント名について、Android、iOSそれぞれで異なる文字制限はありません。

     

    各組み込みガイド
    WebView版イベントトラッキング機能 組み込みガイド v3 > 一歩進んだ使い方

  • HTML配信で、コンテンツ画面に設定したリンクを押下しても何も起こりません

    「URLを開く」ボタンは、【ネイティブのボタン】で実装されており、カスタムURLスキームがセットされた場合は外部アプリが開けるような実装が標準でなされています。


    お知らせ詳細(コンテンツ)のリンクに関しては【WebView内で表示されるWebページのボタン】で実装されており、そこではカスタムURLスキームの場合は外部アプリが開けるような実装がされておりません。

    そのため、カスタムURL(DeepLink) を参照したい場合は表示用の処理を入れていただく必要があります。


    「カスタムURLの処理が実行されない」場合は、カスタムURLスキームが処理できていない可能性が考えられますので、実装を再度ご確認お願いいたします。

     

    <iOS>
    decidePolicyForNavigationAction の実装を再度ご確認ください。

    参考:https://developer.apple.com/documentation/webkit/wknavigationdelegate/1455641-webview

     

    PopinfoDetailViewController.m ファイルの中において独自に decidePolicyForNavigationAction を定義しているため、
    「独自のカスタムURLスキーム処理を行いたい場合に、これをオーバーライドし忘れていないか」もご確認ください。

    「ほかのWebViewだとカスタムURLを開けるのに、詳細画面だと開けない」というようなケースの場合、 「PopinfoDetailViewController.m ファイルの decidePolicyForNavigationAction 処理を見落としている」ケースが該当する可能性が考えられます。

     

    <Android>

    popinfoMessageView.javaファイル内の、カスタムURLの独自実装部分をご確認ください。

     

    参考:カスタムURLの設定

  • 【Android】フォアグラウンド時のみ位置情報取得可能と実装した場合のWi-Fi、beaconの挙動について

    Q. フォアグラウンド時のみ位置情報取得可能と実装した場合、Wi-Fi,beaconもバックグラウンド時には検知されませんか?

     

    A. Wi-Fi,beaconも位置情報と同様の定義となるためバックグラウンド時には検知されません。
    そのため、 フォアグラウンド時のみ位置情報取得可能と実装した場合は、
    アプリがフォアグラウンド時のみ、Wi-Fi,beacon,GPS配信受信可能となります。

     

    <補足>

    AndroidManifest.xml に以下を記載するか否かにより、バックグラウンド時に位置情報を取得するかどうかを選択できます。

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

    ※記載した場合、バックグラウンド時に位置情報取得可能となります。

    GooglePlay への申請時に別途バックグラウンド位置情報のための申請が必要となりますのでご注意下さい。

  • お知らせ件数全件、お知らせ未読全件などを取得するようなメソッドはありますか?

    お知らせの全件数や未読数を取得する際は、各OSのSDKに用意されているメソッドで取得可能です。

     

    ■ iOS SDK

    利用するクラスやメソッドは以下の通りです。

    取得したい項目 実装コード(クラス・メソッド)
    お知らせ全件数
    PopinfoListBaseViewController内の
    retrieveAllPopinfoMessages().count
    未読件数
    PopinfoReceiver内の
    getUnreadMessagesCounts

    実装上の注意点

    1. 全件取得について
      ・ 推奨クラス
      PopinfoListBaseViewController を継承したクラスでの実装を推奨します。

      取得件数の上限
      PopinfoConfiguration.mpopinfoMessagesMax の値に依存します。
      例:100 設定時は最大 100 件まで取得

       

    2. 未読取得について
      引数による挙動の違い
       getUnreadMessagesCounts は引数の指定により取得対象が変わります。
       ・ 引数に nil を指定
        カテゴリの有無や種別に関係なく、最新の maxMessageNumber までの未読数を取得します。
       ・ 引数に ""(空文字)を指定
        カテゴリが設定されていないお知らせの未読数のみを取得します。

      取得件数の上限
       デフォルトは 1,000件 です。 
       ※アプリ内お知らせ(コンテンツ)の表示件数設定を変更している場合は、その設定値に準じます。

        詳細は以下のガイドをご確認ください。
       アプリ内お知らせ(コンテンツ)の表示件数について教えてください。

     

    ■ Android SDK

    利用するクラスやメソッドは以下の通りです。

    取得したい項目 実装コード(クラス・メソッド)
    お知らせ全件数
    PopinfoUtils.getPopinfoAllMessages
    未読件数
    PopinfoUtilsAsync.getUnreadMessagesCount

    実装上の注意点

    • 未読取得の上限
      • Androidでは未読取得件数に上限はなく、全件を取得します。

     

    💡 既読件数を算出したい場合

    既読件数専用のメソッドは用意されていません。以下の計算式で算出してください。 
    既読件数 = お知らせ全件数 - 未読件数

  • プッシュ通知受信時のアラート表示(ポップアップダイアログ)を非表示にしたい

    iOSについて

    IMG_0169.PNG

     

    上記画像のような、プッシュ通知受信時に表示されるアラートが表示されるのは

    以下のような実装を行っていると推測されます。

    こちらのコードを削除することにより、アラート(ダイアログ)は表示されなくなります。

    let alert = UIAlertController(title: "お知らせ", message: popup, preferredStyle: UIAlertController.Style.alert)
    alert.addAction(UIAlertAction(title: "閉じる", style: UIAlertAction.Style.default, handler: {(alert) in
    // 閉じるボタンが押された時は何もしない
    }))
    alert.addAction(UIAlertAction(title: "表示", style: UIAlertAction.Style.default, handler: {(alert) in
    // 表示ボタンが押された時はお知らせ詳細画面に遷移する
    }))
    self.window?.rootViewController?.present(alert, animated: true, completion: nil)

    UIAlertController を使用している箇所を検索し、お探しください。

     

    Androidについて

    Screenshot_20211215-175647.png

    上記画像のような、プッシュ通知受信時に表示されるアラートの制御部分は以下になります。

    popinfo_values.xml

    <!-- ポップアップを表示 -->
    <string name="popinfo_popup_enabled_default">false</string>

    上記popinfo_popup_enabled_default は初期値として指定をしておりますが、
    別途メソッドとして PopinfoSettingUtils.setPopupEnabled を使用することでも、ポップアップダイアログ表示の ON/OFF を変更することが可能です。

  • iOS SDK をアップデートするとクラッシュします

    CoreData バージョンが不整合の場合は、クラッシュの原因となります。
    iOS SDKバージョンによっては CoreData モデルがバージョンアップしている場合がありますので、
    SDK組込みガイド(従来版)「4 SDK付属品一覧」 における CoreData モデルバージョン を確認の上、
    モデルバージョンが正しく設定されていることをご確認ください。


    ■CoreData バージョンを変更するには?
    Xcode上で、PopinfoReceiver.xcdatamodeld をクリックすると、
    画面右側「Core Data Model > Model Version」の「Current」にバージョンが表示されます。
    Current のプルダウンメニューから、最新バージョンを選択してください。
    CoreDataモデルバージョンは常に最新バージョンを指定してください。
    バージョンが適切に設定されていない場合、App の異常終了を発生させることがあります。

  • 主要イベントの発火契機について

    具体的には以下のイベントの発火契機をまとめています。

    開封数・・・ _S.push.open
    お知らせ閲覧数・・・ _S.detail.appear
    サイト閲覧数・・・ _S.detail.openUrl
    お知らせ一覧閲覧終了・・・_S.list.disappear
    お知らせ詳細閲覧終了・・・_S.detail.disappear

     

    下記が各イベントが発火する契機となりますので、正しくメソッドが呼ばれているかご確認ください。

    iOS

    開封数(_S.push.open)

    • メソッド PopinfoReceiver.shared.receiveNotification(_:) が呼ばれたタイミング
      • 通常時、通知バナーをタップしたタイミングで上記メソッドが呼ばれます

    お知らせ一覧閲覧(_S.list.appear)

    • お知らせ一覧画面のライフサイクルメソッド viewWillAppear がコールされたタイミング
      • 継承先で同メソッドを実装している場合は call-super を忘れていないことが発火条件です

    閲覧数(_S.detail.appear)

    • お知らせ詳細画面のライフサイクルメソッド viewWillAppearがコールされたタイミング
      • 継承先で同メソッドを実装している場合は call-super を忘れていないことが発火条件です

    サイト閲覧数(_S.detail.openUrl)

    • -[PopinfoDetailBaseViewController didSelectOpenUrl]が呼ばれたタイミング
    • PopinfoDetailViewController を継承したクラスで webView:decidePolicyForNavigationAction:decisionHandler:メソッドを追加しているかつ、[super webView:decidePolicyForNavigationAction:decisionHandler:]を呼んでいる場合

    お知らせ一覧閲覧終了(_S.list.disappear

    • お知らせ一覧画面が最前面でなくなった時に記録されます
    • お知らせ一覧画面のライフサイクルメソッド viewWillDisappear がコールされたタイミング

    お知らせ詳細閲覧終了_S.detail.disappear

    • お知らせ詳細画面が最前面でなくなった時に記録されます
    • お知らせ詳細画面のライフサイクルメソッド viewWillDisappearがコールされたタイミング
      • 継承先で同メソッドを実装している場合は call-super を忘れていないことが発火条件です

     

    Android

    開封数(_S.push.open)

      • 通知バナーをタップしたタイミングで、イベントが付与されます。
      • ポップアップ通知をタップして、通知を開封した場合
        • PopinfoUiUtils.showMessageView(Context context, long messageId)メソッドをコールしたタイミング
          • カスタマイズ時など、独自で開封数を付与する場合に呼び出す場合にご利用ください
        • PopinfoBasePopupクラスを継承している場合、PUSH受信時のポップアップ画面の任意のタイミングで PopinfoBasePopup.trackEventPushOpen()を呼びだすことでイベント付与することも可能

    お知らせ一覧閲覧(_S.list.appear)

    • PopinfoBaseList クラスを継承しているクラスを表示した際に付与されます
      • 端末ホーム画面→お知らせ一覧画面へ復帰、などの遷移でも付与されます

    閲覧数(_S.detail.appear)

    • PopinfoBaseMessageView クラスを継承しているクラスを表示した際に付与されます
      • 端末ホーム画面→お知らせ詳細画面へ復帰、などの遷移でも付与されます
    • お知らせメッセージを独自に取得しFragmentの切り替えを行っている場合では閲覧率は記録されません

    サイト閲覧数(_S.detail.openUrl)

    • WebView 内での遷移
      • PopinfoMessageWebViewClient を実装し、この中で shouldOverrideUrlLoadingsuper.shouldOverrideUrlLoading(view, url);を呼んでいる場合
    • URL を開くボタンでの遷移
      • PopinfoUiUtils.openUrl で URL を開いた場合 
    • イベント付与するのみのメソッド(ボタンで開いた際と同じパラメータとなる)
      • PopinfoBaseMessageView.trackEventOpenUrl をコールした場合
        • PopinfoUiUtils.openUrl を使用できない場合はこちらを利用

    お知らせ一覧閲覧終了(_S.list.disappear

    • PopinfoBaseList クラスを継承している場合
      • 画面が非表示となる直前(onPause時)に付与されます

    お知らせ詳細閲覧終了_S.detail.disappear

    • PopinfoBaseMessageView クラスを継承している場合
      • 画面が非表示となる直前(onPause時)に付与されます

     

     

  • FANSHIP SDK はどのようなタイミングでバージョンアップすべきでしょうか?

    最新版 SDK のご利用を推奨いたします。

    使いたい新機能が発生したタイミング・不具合解消版、もしくは開発環境のverアップ時などに、
    対応版のSDKへのアップデートをご検討ください。

    OSごとのサポート状況|https://support.fanship.jp/hc/ja/articles/360034208634

    リリースノート(新機能情報)
    iPhone|https://support.fanship.jp/hc/ja/articles/360009909634
    Android|https://support.fanship.jp/hc/ja/articles/360010087293

  • Android - 配信優先度を選択した場合の制限事項について

    Android 端末では、Doze モード、アプリスタンバイバケットなどの電源管理機能の影響により、
    バックグラウンド時のアプリ動作に制限が掛かることで、プッシュ通知が遅れて届く場合があります。

     

    プッシュ通知の優先度「高」を選択することにより、電源管理の制限にかかることなく通知を送ることが可能ですが、各機能や、アプリの状態によって制限事項が異なります。以下をご参考ください。

    ※優先度「高」のプッシュ通知を適用させる場合、FANSHIP Android SDK ver 7.3.1以上を組み込む必要があります。

    ※FANSHIP Android SDK ver 7.3.1以下を組み込んでいる場合、プッシュ通知は正常に届きますが、優先度「高」の状態は適用されません。

     

     

    ■Dozeモード

    優先度 プッシュ通知
    優先度:高 制限を受けない
    優先度:中 制限を受ける

     

    ■アプリスタンバイバケット

    アプリスタンバイバケットは4種類あり、それぞれ以下のように定義されています。
    各バケットの詳細については、公式ドキュメントをご確認ください(こちら

    • アクティブ(active)
      • 現在使用されている、またはごく最近使用されたアプリ
    • ワーキング セット(working set)
      • 定期的に使用されているアプリ
    • 高頻度(frequent)
      • 毎日ではないが、よく使用されるアプリ
    • 低頻度(rare)
      • あまり使用されないアプリ

    各バケット種別により、制限事項が異なります。
    ※下記表はAndroid 12(API レベル 32)以下にのみ適用されます。

    プッシュ通知 バケット種別

    優先度

    アクティブ ワーキングセット 高頻繁 低頻度
    優先度:高 制限を受けない 制限を受けない

    10件/日

    (端末ごと)※

    5件/日

    (端末ごと) ※

    優先度:中

    制限を受けない

    制限を受けない 制限を受ける 制限を受ける 

     

    ※端末上のアプリが「頻繁」や「低頻度」のバケット種別になっている場合、
    「優先度:高」でプッシュ通知を送信した場合でも、受け取れる通知の数に制限が設けられています。

    ※Android 13(API レベル 33)では Firebase Cloud Messaging(FCM)の割り当てが更新され、優先度の高い FCM に応じて通知を表示するアプリに対する、優先度の高い FCM の配信の信頼性が向上しました。
    詳細についてはこちらの公式ドキュメントをご確認ください。

     

    ※制限を受けない・・・電源管理機能などの影響を受けずにプッシュ通知を送ることが可能です。
    ※制限を受ける・・・電源管理機能などの影響を受け、プッシュ通知が実際に端末に到達するのに遅延が発生する恐れがあります。

     

    Android 公式サイト引用:


    以上です。
    内容について不明点あれば、お気軽に お問合せ ください。


     

  • アプリアイコンのバッジの非表示方法

    iOSの場合

    入稿時、FANSHIP Management API をご利用の場合、ペイロード指定をすることでアプリ側にバッジを表示させないことが可能です。現状 SDK 実装による非表示対応は行えません。


    popup_itemsによるプッシュ通知ペイロード指定にて、badgeを「0」と指定することで非表示にできます。

     

    ただし、こちらはプッシュ通知を受信した際にバッジのカウントをリセットするものとなり、プッシュ通知を入稿する際に毎回「0」に設定する必要があります。

     

    また、FANSHIP Management APIのみの対応可能となっており、
    FANSHIP管理画面からの入稿では対応しておりませんのでご承知おきください。

     

    各種API仕様書一覧

    https://support.fanship.jp/hc/ja/articles/360026718253

     

    Androidの場合


    Androidでは設定 -> アプリと通知 -> アプリ情報 -> アプリの通知 -> 通知ドットの許可 にてエンドユーザー側で制御が行えます。

     

    アプリ側で制御したい場合は以下の通り実装をしてください。
    ※ 実装を行った場合でも、エンドユーザー側にて設定変更が可能

    ①通知のカスタマイズ設定を行い、アプリ独自の通知チャンネルを作成します。

    ※ popinfo_valuses.xml の popinfo_notification_customize_enabled を true にすることでカスタマイズが ON になります。

     

    ② 通知チャンネルを作成するタイミングで setShowBadge(false) を指定してください。
    ※ setShowBadge についてはチャンネル作成時にしか設定できないためご注意ください。

     

    ③ PopinfoCallback の onNotificaitonAppeared で作成した通知チャンネルを指定してください。
    ※組み込みガイドの各種機能 > コールバックをご参考ください。

     

    組み込みガイド

    https://support.fanship.jp/hc/ja/articles/360026570534

     

    以上です。
    不明点があればお気軽にお問い合わせください。

     

     

  • 端末の設定項目と、SDKの関係性について

    各OSとSDKの設定項目における挙動や実装についてまとめました。

    実装の参考にご活用ください。

    プッシュ配信について

    初回起動時のプッシュ通知の許諾ダイアログをOFFに設定した場合の各OS挙動について

    初回起動時のプッシュ通知の許諾ダイアログを非表示(SKIP)にした場合の挙動について

    「お知らせを受信する」の項目を非表示とする場合

    「位置情報を送信する」の項目を非表示とする場合

    「位置情報精度」の項目を非表示とする場合

     

     

    プッシュ配信について

    各OSとSDKの設定において、プッシュ配信の可否をまとめました。

    iOS

    iOS______.png

    補足
    前提としてiOSは「push_enabled = true」となるには、「お知らせを受信する」、「通知を許可」の両方がONであることと、
    「ロック画面」、「通知センター」、「バナー」、「サウンド」、「バッジ」のいずれかがONである必要があります。
    ※「ロック画面」、「通知センター」に関しては、iOS ver 9.1.0にて条件追加されました。
    ※「push_enabled = true」は、FANSHIPがプッシュ通知を送信対象と見做す指標です。

    通知許可設定 挙動
    お知らせを受信する:ON
    通知の許可:ON

    配信タイプ1、4の場合は、プッシュ通知もお知らせも届きます。

    お知らせを受信する:ON
    通知の許可:OFF

    「push_enabled = false」となるため、プッシュ通知は届きません。
    配信タイプ1の場合は、プッシュ通知もお知らせも届かない。
    配信タイプ4の場合は、お知らせのみ届きます。

    お知らせを受信する:OFF
    通知の許可:ON
    同上

     

    Android

    Android___________.png

    上記画像の右側、端末設定画面では「FANHIP DEMO のすべての通知」と表示されていますが、端末のバージョンによって「通知の表示」と表示されます。
    ここでは「通知の表示」と表記を統一して記載いたします。

    Android.png

     

    補足
    前提として、「お知らせを受信する」と、「通知の表示」は連動していません。
    「お知らせを受信する」がONであればプッシュ通知は届きます。

    通知許可設定 挙動
    お知らせを受信する:ON
    通知の表示:ON

    「お知らせを受信する」がONであればプッシュ通知は届きます。
    そのため、配信タイプ1、4の場合は、プッシュ通知もお知らせも届きます。

    お知らせを受信する:ON
    通知の表示:OFF

    同上。
    ※プッシュ通知に関して、ポップアップは表示されますが、通知エリア(画面上部の通知箇所)には表示されません。

    お知らせを受信する:OFF
    通知の表示:ON

    「お知らせを受信する」がOFFであればプッシュ通知は届きません。
    配信タイプ3、4の場合は、お知らせが届きます。

     

    初回起動時のプッシュ通知の許諾ダイアログをOFFに設定した場合の各OS挙動について

    初回起動時のプッシュ通知の許可ダイアログでOFFを設定した場合、端末とSDKの設定項目がどのように設定されるかまとめました。

    iOS

    設定項目 挙動
    「通知の許可」 OFF
    「お知らせを受信する」 ON

     

    Android

    設定項目 挙動
    「通知の表示」 ON
    「お知らせを受信する」 OFF

     

    初回起動時のプッシュ通知の許諾ダイアログを非表示(SKIP)にした場合の挙動について

    初回起動時のプッシュ通知の許可ダイアログをSKIPした場合、SDKの設定項目がどのように設定されるかまとめました。

    iOS

    iOSに関しては、仕様上許諾ダイアログを非表示にすることはできません。
    任意で表示されるタイミングを変更することはできますが、Androidのようにスキップすることは不可となります。

     

    Android

    ※許諾ダイアログの非表示については、POPINFO_SKIP_PUSH_AGREEMENTをtrueとした場合です

    設定項目 挙動 補足
    「お知らせを受信する」 ON ・push_enabledが自動でtrueとなる
    ・エンドユーザは「お知らせを受信する」を後から変更可能
    ・エンドユーザはOSの設定画面で「通知の表示」を後から変更可能

     

    「お知らせを受信する」の項目を非表示とする場合

    「お知らせを受信する」の設定項目自体を非表示とする対応をまとめました。

    _________.png

    注意:
    設定項目自体を非表示とするため、既存ユーザーが後から設定変更出来なくなります。

    新規インストールユーザーに関しては「お知らせを受信する」がONに設定されるため、
    Androidに関しては通知が常に送られてしまう状態になります。
    十分にご検討した上でご利用ください。

     

    iOS

    対応方法 挙動
    Settings.bundle > Root.plist ファイルから、項目を削除。
    設定に関する項目は Settings.bundle > ja.lproj > Root.stringsを参照。
    ・初回インストール時の許諾ダイアログはOSから表示される
    ・「お知らせを受信する」がONに設定される
    ・エンドユーザは「お知らせを受信する」を後から変更不可
    ・エンドユーザは「通知を許可」を後から変更可能

     

    Android

    対応方法 挙動
    組み込みガイドのファイル構成にある「FANSHIP 設定画面」を参照。
    popinfo_settings.xmlファイルの
    <!-- お知らせ受信の設定 --> について非表示にする。
    ・エンドユーザは「お知らせを受信する」を後から変更不可
     ※既存がONの人はON、OFFの人はOFFのまま
     ※新規インストールの人はON
    ・エンドユーザは「通知を表示」を後から変更可能

     

    「位置情報を送信する」の項目を非表示とする場合

    「位置情報を送信する」の設定項目自体を非表示とする対応をまとめました。

    _________.png

    注意:
    設定項目自体を非表示とするため、既存ユーザーが後から設定変更出来なくなります。

    十分にご検討した上でご利用ください。

     

    iOS

    対応方法 挙動
    Settings.bundle > Root.plist ファイルから、
    「位置情報を送信する」に関する項目(Item2, Item3, Item4)を削除。
    設定に関する項目は Settings.bundle > ja.lproj > Root.stringsを参照。
    ・非表示にした項目をエンドユーザが後から変更不可
     ※既存がONの人はON、OFFの人はOFFのまま

     

    Android

    対応方法 挙動
    組み込みガイドのファイル構成にある「FANSHIP 設定画面」を参照。
    popinfo_settings.xmlファイルの位置情報に関する箇所を非表示にする
    ・非表示にした項目をエンドユーザが後から変更不可
     ※既存がONの人はON、OFFの人はOFFのまま

     

    「位置情報精度」の項目を非表示とする場合

    「位置情報精度」の設定項目自体を非表示とする対応をまとめました。

    ______.png

    注意:
    設定項目自体を非表示とするため、既存ユーザーが後から設定変更出来なくなります。

    十分にご検討した上でご利用ください。

     

    iOS

    対応方法 挙動
    Settings.bundle > Root.plist ファイルから、
    位置情報精度に関する項目(Item5)を削除。
    設定に関する項目は Settings.bundle > ja.lproj > Root.stringsを参照。
    ・非表示にした項目をエンドユーザが後から変更不可
     ※既存が高の人は高、低の人は低のまま

     

    Android

    Androidは「位置情報精度」の項目を保持しておりません

     

  • ユーザー属性設定画面を任意のタイミングで表示させることはできますか?

    ユーザー属性設定画面は、デフォルトでは初回起動時に表示されますが、
    初回起動時以外の任意のタイミングで表示することも可能です。

    表示させたいタイミングで以下のメソッドを呼び出してください。

    ◆Android

    boolean ret = PopinfoUiUtils.showSegmentSettings(this);
    // this はContext

     

    ◆iOS

    let segmentVC = PopinfoSegmentSettingsViewController(nibName:"PopinfoSegmentSettingsViewController", bundle:Bundle.main)
    segmentVC.delegate = self;


    詳細は 各SDKの 組込みガイド > 各種機能 > ユーザー属性 をご確認ください。

  • 配信をカテゴライズする実装方法について

    お知らせ取得に関するメソッドを利用し、Listを取得してください。
    その後、カテゴリを判定し、表示の振り分けを行うことでカテゴリごとにお知らせの表示が可能となります。

    メソッドの詳細はSDK 同梱の以下資料を参照してください。
    ・Android:popinfo_javadoc
    ・iOS:document

     

    実装方法

    【Android】
    アプリ内に保存されているお知らせデータを取得する
    対象クラス:PopinfoUtils

    サーバーからお知らせデータを取得する場合は、以下クラスのお知らせ取得に関するメソッドを利用したあと、上記クラスのお知らせ取得に関するメソッドを実行してください。
    対象クラス:PopinfoUtilsAsync

     

    【iOS】
    アプリ内に保存されているお知らせデータを取得する
    対象クラス:PopinfoListBaseViewController

    サーバーからお知らせデータを取得する場合は、以下クラスのお知らせ取得に関するメソッドを利用したあと、上記クラスのお知らせ取得に関するメソッドを実行してください。
    対象クラス:PopinfoReceiver

     

    その他

    未読に関するお知らせの取得は下記リンクもご参考ください。
    https://support.fanship.jp/hc/ja/articles/4402909254681

  • Flutter に対応していますか?

    動作保証について

    メジャーバージョンで動作保証しております。

     

    サポートについて

    Flutter 領域はサポート対象外となりますが、FANSHIP SDK 領域はサポート対象となります。
    お問い合わせや不具合の対応などはサポートを行っております。
    お問い合わせ時は「Flutterを利用している」旨添えていただけると対応がスムーズです。

     

    Flutter 領域について

    Flutter 領域のサポートに関しては、FANSHIP領域外となります。
    別途ご契約の上、エンジニアサポート・保守対応のご相談は承っております。
    営業担当までお問い合わせください。

     

    プラグインやドキュメントの公開について

    Flutter 領域のため、公開しておりません。

  • FANSHIP SDK 8.0.0以上にアップデートしたらプッシュ通知が開封できなくなりました

    FANSHIPでは、Android OS 12の対応として、
    FANSHIP SDK 8.0.0 にてプッシュ通知タップ時の内部処理フロー(PopinfoNotificationDispatcher アクティビティ)を追加しました。

    特にカスタマイズをしていなければ、プッシュ通知が開封できないといった事象は起きませんが、
    アクティビティの状態から分岐する処理などを独自に実装されている場合は、プッシュ通知タップ時も想定通り動作するかご確認ください。

     

    想定通りに動作しない場合は、以下の方法で解決する場合がございますのでお試しください。
    1. アプリ側の AndroidManifest.xml ファイルに tools を追加する

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp"
    xmlns:tools="http://schemas.android.com/tools">


    2. アプリ側の AndroidManifest.xmlファイルに以下を追記する

    <!-- カスタマイズ Dispatcher クラス定義-->
    <activity
    android:name="jp.iridge.popinfo.sdk.baseui.PopinfoNotificationDispatcher"
    android:screenOrientation="behind"
    android:launchMode="singleInstance"
    android:taskAffinity=""
    android:excludeFromRecents="true"
    android:exported="false"
    android:theme="@style/PopinfoTransparent"
    tools:node="replace" />

     

  • 配信済みのお知らせを削除することはできますか?

    一度配信したお知らせはSDKから削除できませんが、非表示にすることは可能です。
    非表示にする方法は以下の2つがあります。

     

    エンドユーザー起因でお知らせを非表示にする方法

    標準のSDKを組み込んだ場合、「お知らせ一覧」の右上に編集アイコンが表示されます。
    編集アイコンをタップすると各お知らせの右側にチェックボックスが表示され、チェックを外すことで該当のお知らせを一覧から非表示にできます。

    スクリーンショット 2025-09-25 164341.png

     

    管理者側でお知らせを非表示にする方法

    SDK標準のお知らせ画面を利用していない場合、お知らせの表示/非表示フラグ制御のカスタマイズにより非表示対応が可能です。
    ※非表示にする配信IDを事前に把握しておく必要があります

     

    iOS

    表示制御フラグ:
    対象クラス:PopinfoMessage
    項目:piVisible

    お知らせ一覧の表示、非表示を更新:
    対象クラス:PopinfoListBaseViewController
    メソッド:updateMessageVisible

     

    Android

    表示制御フラグ:
    対象クラス:PopinfoMessage
    項目:visible

    お知らせ一覧データCursorに対応するメッセージの表示状態を更新:
    対象クラス:PopinfoUtils
    メソッド:updateVisible

     

    実装方法

    1.アプリ側でメッセージ一覧を取得

    2.ループ処理にて、非表示にしたい配信IDに対して非表示のフラグ設定する

    3.お知らせ一覧の表示、非表示を更新する

  • SDKをダウングレードした場合の挙動はどうなりますか?

    FANSHIP SDKは、基本的にアップデートを前提に設計されています。
    そのため、古いバージョンへのダウングレードは想定されておらず、サポートの対象外となり動作保証は行っておりません。

     

    SDKのアップデートでは、目に見える機能変更だけでなく、内部的な処理にも調整が加えられていることがあります。
    そのため、古いバージョンを使用する場合、以前と同じように動作しない可能性があります。

     

    お手数ではございますが、特定のバージョンでご利用されたい場合は、お客様ご自身での事前検証をお願いしております。
    ご理解のほど、よろしくお願いいたします。

  • FANSHIP SDK / FANSHIP Coupon SDKのバージョンを確認できますか?

    下記2種類の方法でFANSHIPのSDKバージョンを確認できます。

    イベントから確認

     ソースファイルから確認

        • Android
          • FANSHIP SDK および FANSHIP Coupon SDK 
            • ._build.gradle内の versionName を確認
        • iOS
          • FANSHIP SDK
            • lib/PopinfoConfiguration.h 内 の Version を確認
          • FANSHIP Coupon SDK
            1. FanshipCouponSDK.xcframework/ios-arm64/FanshipCouponSDK.framework/Info.plist を開く
            2. Bundle version string (short) を確認
  • Android15 以降での 16KB ページサイズには対応していますか?

    FANSHIP SDK は、16KB ページサイズにすでに対応を完了しています。

    そのため、追加の対応や設定変更は不要です。
    また、.soファイルを利用していないため、従来通り組み込んでご利用いただけます。

     

    💡SDK バージョンアップについて

    Android の要件変更により、2025年11月1日以降、16KB ページサイズへの対応が必須となります。
    これに伴い、ver 11.0.0 未満の SDK は対象 API レベル要件を満たさなくなるため、ver 11.0.0 以上のご利用を推奨します。

     

    【参考】