LEEEP Android SDKは、LEEEPがwebプラットフォーム向けに提供している「コンテンツの表示」と「成果の計測」を、Android向けアプリ上で実現するためのライブラリです。
※ Android Studio 2025.2.2における手順です
プロジェクトの
settings.gradle(.kts)のdependencyResolutionManagementブロックに追加Kotlinアプリモジュールの
build.gradle(.kts)のdependenciesブロックにimplementationを追加本記事のPush通知を利用する場合は、LEEEP Android SDK 0.8.1以上を指定してください。ブログ一覧・詳細タグのみを利用する場合の下限は0.7.0です。
Kotlin最新のバージョンは leeep-android-sdkリポジトリのtag一覧 からご確認ください。
Android Studio上の
Sync Nowをクリック
アプリの起動時に Leeep.setup(websiteId: String) による初期化を行ってください。
websiteIdはLEEEP管理画面にてご確認ください。
実装例( onCreate(savedInstanceState: Bundle?) 内で Leeep.setup(websiteId:) を実行)
Applicationクラスを持つアプリの場合
「ソーシャル投稿」「投稿者」「レビュー」「UGC」に加え、SDK 0.7.0から「ブログ一覧」「ブログ詳細」タグを表示できます。
LeeepTagView(tagId: String) でタグのViewを生成します。
tagIdはLEEEP管理画面のタグ一覧にてご確認ください
onTapLinkで画面遷移のハンドリングを行えます。詳しくはリファレンスを参照してくださいonScrollRequestを設定すると、レビュー一覧のページ切替時に、外側のスクロールコンテナを移動するための要求を受け取れます。Column、LazyColumn、ViewシステムのScrollViewなどへLEEEPタグを配置する場合に使用してください。詳しくはリファレンスを参照してください。
実装例
onScrollRequest は任意です。設定していない既存実装はそのまま利用できます。LazyColumn とViewシステムの例はリファレンスを参照してください。
LazyColumn 外にて makeLeeepTagView でviewを生成し、 LazyColumn 内で AndroidView に与えてください。
tagIdはLEEEP管理画面のタグ一覧にてご確認ください
onTapLinkで画面遷移のハンドリングを行えます。詳しくはリファレンスを参照してくださいonScrollRequestを設定すると、レビュー一覧のページ切替時に、外側のスクロールコンテナを移動するための要求を受け取れます。Column、LazyColumn、ViewシステムのScrollViewなどへLEEEPタグを配置する場合に使用してください。詳しくはリファレンスを参照してください。
Jetpack Composeを使わない従来のViewシステムでも、 makeLeeepTagView を使って WebView を生成し、XMLレイアウトに配置できます。
tagIdはLEEEP管理画面のタグ一覧にてご確認ください
onTapLinkで画面遷移のハンドリングを行えます。詳しくはリファレンスを参照してくださいonScrollRequestを設定すると、レビュー一覧のページ切替時に、外側のスクロールコンテナを移動するための要求を受け取れます。Column、LazyColumn、ViewシステムのScrollViewなどへLEEEPタグを配置する場合に使用してください。詳しくはリファレンスを参照してください。
LEEEP管理画面で、ブログ一覧用とブログ詳細用のタグをそれぞれ作成します。アプリ側にも一覧画面と詳細画面を用意し、各画面に対応するタグIDを指定してください。
一覧のブログリンクをタップすると、onTapLink に LeeepLinkHandlerParam.Blog が通知されます。受け取った slug をアプリの詳細画面へ渡し、詳細タグの blogSlug に指定します。
次の例では、onOpenBlog をアプリのブログ詳細画面への遷移処理へ接続します。onOtherLink には、商品・投稿者などの既存のリンク処理を渡してください。
BLOG_LIST_TAG_ID と BLOG_DETAIL_TAG_ID を、発行した各タグIDへ置き換えます。詳細画面の onTapLink にも、ブログ・商品・投稿者などの遷移処理を設定してください。
blogSlug は名前付き引数で指定します。値には記事のスラッグをそのまま渡してください。URL全体や postId ではありません。アプリ側でURLエンコードする必要はありません。Viewシステムでも、makeLeeepTagView の blogSlug に同じ値を指定します。
ブログリンクの判定には、LEEEP管理画面の「ブログ詳細ページパス」と、クエリ形式の場合は「スラッグクエリパラメータ名」の設定が必要です。詳しくはAndroid SDKリファレンスの「ブログリンク」の説明をご覧ください。
SDK 0.7.0で LeeepLinkHandlerParam に Blog が追加されました。すべてのケースを列挙した when には Blog 分岐を追加してください。else がある場合も、アプリ内で記事詳細を開くには Blog の処理が必要です。
ブログ詳細の商品リンクは LeeepLinkHandlerParam.Product で受け取ります。id に入る商品IDの種類は、LEEEP側の「SDKに渡す商品ID」の設定に合わせてください。詳細はAndroid SDKリファレンスの「商品リンクで受け取るID」をご覧ください。
アプリ内で注文が完了した際に Leeep.Analytics.order() で注文イベントを計測します。
詳しくはリファレンスを参照してください。
webの購入完了ページで既に ParteTracking.order() を実装済みで、アプリからの注文でもwebの購入完了ページを表示する場合、アプリ側の実装は不要です。詳しくはお問い合わせください。
サンプルコード
LEEEP Android SDK 0.8.1以上では、フォローしているスタッフの新しいコーデ・ブログの通知をアプリで受け取るための登録・同期APIを利用できます。SDKを更新するだけで通知が有効になることはありません。Pushを利用するアプリで、以下の連携を追加してください。
アプリ側でFirebaseによる通知受信の動作確認が済み、FCMに登録済みのFirebase Installation ID(FID) と、現在のOS通知権限を取得できる状態を前提とします。LEEEPへ渡す通知先は登録済みFIDです。FCM登録トークン・APNsトークンや、FCM登録が確認できていないFIDは使用できません。
Firebaseの設定・登録・通知受信の実装はFirebaseのAndroid向け公式ドキュメントをご参照ください。本記事では、準備済みのアプリとLEEEP SDKの連携を説明します。
ご利用のwebsiteでPush通知機能が有効になっていることを確認します。管理画面の「設定 → Push通知」が表示されない場合は、LEEEP担当者にお問い合わせください。
管理画面にアプリを登録し、website ID・PushアプリID・Androidパッケージ名を確認します。PushアプリIDはLEEEPの数値IDです。FirebaseのアプリIDやパッケージ名とは異なります。
アプリで利用するFirebaseプロジェクトのサービスアカウントJSONを、LEEEP管理画面に登録します。LEEEPから通知を送信するための認証情報です。この秘密鍵をアプリに同梱しないでください。
websiteId と appId を実際の値に置き換えてください。同じwebsite・Pushアプリ・接続先について、Applicationなどでクライアントを1つ保持します。Composeの再描画ごとに作り直す必要はありません。
userId には、スタッフのフォローで使用している外部会員IDと同じ値を渡します。端末ID・FID・LEEEPのinstallation IDは会員IDの代わりになりません。SDKは会員IDの原文を保存しないため、ログイン復元後も identify を呼んでください。
次はSDK呼び出し部分の抜粋です。登録済みFIDやOS通知権限を非同期に確認・更新する処理を開始する前に update を取得し、同じ処理の完了時に渡します。
OSと通知チャネルの設定を確認し、通知可能なら GRANTED、拒否・チャネル無効なら DENIED、権限未選択なら NOT_DETERMINED を渡します。現在の配信対象は GRANTED の端末です。
古い会員・古いFIDのコールバックを再利用しないでください。ホスト側で登録コールバックのFIDが現在のFirebase installationと一致することも確認します。詳細はPush APIリファレンスの更新チケットの説明をご覧ください。
OSの通知権限とLEEEPの通知同意は別々に扱います。identify 後、利用者が通知ON/OFFを選んだときに呼びます。起動のたびに自動でONへ戻さないでください。
操作は非同期でサーバーへ同期します。戻り値だけで完了とせず、getStatus() またはコールバックを確認してください。通信復旧時は retry() で再試行できます。通知OFFは会員・Pushアプリ単位の購読設定、ログアウトはその端末と会員の紐付け解除です。
受け取った通知dataをSDKで解析し、結果をアプリ側の処理へ渡します。通知には対象を識別するIDなどが含まれます。
notificationData には通知のFCM data部分を渡します。RemoteMessage.data を利用でき、配送メタデータは含めません。 expectedScope はアプリに設定した pushScope を使います。解析結果が null の場合はLEEEPの通知として扱いません。
payload.target の種類 | 取り出す情報 | 用途 |
|---|---|---|
LeeepPushTarget.Coordinate | ugcId | 通知対象のコーデを識別する表示用ID |
LeeepPushTarget.Blog | ugcId・ | 通知対象のブログを識別する表示用IDとslug |
両方の通知に元コンテンツIDの sourceContentId も含まれますが、表示対象のIDには ugcId を使います。共通の payload.deliveryId は通知の配信を識別する値です。
取り出したIDやslugをどのように扱うかは、アプリ側の既存処理に接続してください。受信するJSONの全項目と型は、リファレンスの「通知データの形式」をご覧ください。
同じ会員IDで対象スタッフをフォローします。
Pushの状態が
bound=true、consent="opted_in"、osPermission="granted"、pending=false、error=nullになっていることを確認します。これは登録・同期の状態で、配信成功そのものではありません。LEEEP側でアプリの自動通知と配信が有効になっていることを確認します。
有効化後に対象スタッフが新しいコーデ・ブログを公開し、通知を受信できることと、解析結果の
ugcId・slugが対象投稿に一致することを確認します。通知OFF・ログアウト・OS通知拒否でも挙動を確認します。
Pushクライアントは通知を即時送信するAPIではありません。通知到着までには配信処理の待ち時間があります。管理画面の自動通知OFF中の過去投稿を、ONにしただけでまとめて送る用途にも使いません。
ショッピング系のアプリの場合、商品詳細画面でその商品に紐付く投稿を表示することがコンバージョン率の向上に有効です。
特定の商品が紐付く投稿だけを表示したい場合、 LeeepTagView() に productId を与えてください。もし該当する投稿が0件の場合、 LeeepTagView の高さは0になります。
詳しくはリファレンスを参照してください。
アプリ上で会員ログイン時にユーザーIDをこの関数に与え、ログアウト時に null をこの関数に与えてください。
詳しくはリファレンスを参照してください。