LEEEP iOS SDKは、LEEEPがwebプラットフォーム向けに提供している「コンテンツの表示」と「成果の計測」を、iOS向けアプリ上で実現するためのライブラリです。
※ Xcode 16.0における手順です
Xcodeでインストールしたいプロジェクトを開き、メニューから
File > Add Package Dependencies...右上の
Search or Enter Package URLにhttps://github.com/REGALITECH/leeep-ios-sdkと入力leeep-ios-sdkを選択し、Add Package
本記事のPush通知を利用する場合は、LEEEP iOS SDK 0.12.0以上を指定してください。ブログ一覧・詳細タグのみを利用する場合の下限は0.11.0です。すでに導入済みの場合は、Xcodeでパッケージのバージョンを更新します。
未対応です。
未対応です。
アプリの起動時に Leeep.setup(websiteId: String) による初期化を行ってください。
websiteIdはLEEEP管理画面にてご確認ください。
実装例( application(:didFinishLaunchingWithOptions:) 内で Leeep.setup(websiteId:) を実行)
「ソーシャル投稿」「投稿者」「レビュー」「UGC(リスト / UGC投稿詳細ページ)」に加え、SDK 0.11.0から「ブログ一覧」「ブログ詳細」タグを表示できます。
LeeepTagView(tagId: String) でタグのViewを生成します。
tagIdはLEEEP管理画面のタグ一覧にてご確認ください
onTapLinkで画面遷移のハンドリングを行えます。詳しくはリファレンスを参照してくださいonScrollRequestを設定すると、レビュー一覧のページ切替時に、外側のScrollViewを移動するための要求を受け取れます。LEEEPタグをアプリ側のスクロールコンテナ内へ配置する場合に使用してください。詳しくはリファレンスを参照してください。
実装例( ScrollView 内に LeeepTagView を設置)
LeeepTagViewUIKit(tagId: String) でタグのViewを生成します。
tagIdはLEEEP管理画面のタグ一覧にてご確認ください
onTapLinkで画面遷移のハンドリングを行えます。詳しくはリファレンスを参照してくださいonScrollRequestを設定すると、レビュー一覧のページ切替時に、外側のScrollViewを移動するための要求を受け取れます。LEEEPタグをアプリ側のスクロールコンテナ内へ配置する場合に使用してください。詳しくはリファレンスを参照してください。
実装例( ScrollView 内に LeeepTagView を設置)
LEEEP管理画面で、ブログ一覧用とブログ詳細用のタグをそれぞれ作成します。アプリ側にも一覧画面と詳細画面を用意し、各画面に対応するタグIDを指定してください。
一覧のブログリンクをタップすると、onTapLink に .blog(slug:url:) が通知されます。受け取った slug をアプリの詳細画面へ渡し、詳細タグの blogSlug に指定します。
次の例では、onOpenBlog をアプリのブログ詳細画面への遷移処理へ接続します。onOtherLink には、商品・投稿者などの既存のリンク処理を渡してください。
BLOG_LIST_TAG_ID と BLOG_DETAIL_TAG_ID を、発行した各タグIDへ置き換えます。詳細画面の onTapLink にも、ブログ・商品・投稿者などの遷移処理を設定してください。
blogSlug には記事のスラッグをそのまま渡します。URL全体や postId ではありません。アプリ側でURLエンコードする必要はありません。UIKitでも、LeeepTagViewUIKit の blogSlug に同じ値を指定します。
ブログリンクの判定には、LEEEP管理画面の「ブログ詳細ページパス」と、クエリ形式の場合は「スラッグクエリパラメータ名」の設定が必要です。詳しくはiOS SDKリファレンスのブログリンクの説明をご覧ください。
SDK 0.11.0で LeeepLinkHandlerParam に .blog が追加されました。すべてのケースを列挙した switch には .blog 分岐を追加してください。default がある場合も、アプリ内で記事詳細を開くには .blog の処理が必要です。
ブログ詳細の商品リンクは .product(id:url:) で受け取ります。id に入る商品IDの種類は、LEEEP側の「SDKに渡す商品ID」の設定に合わせてください。詳細はリファレンスをご覧ください。
レビュー一覧タグをアプリ側の ScrollView 内へ配置する場合、2ページ目以降へ切り替えたときに、外側のスクロール位置をレビュー一覧先頭へ戻す必要があります。
onScrollRequest を設定すると、ページ切替時に LeeepScrollRequest を受け取れます。外側のスクロールコンテナを、LeeepTagView の上端から request.hostOffsetTop ポイント下の位置へ移動してください。
onScrollRequest は任意です。設定していない既存実装はそのまま利用できます。座標変換を含むUIKitの実装例はLEEEP iOS SDK リファレンスを参照してください。
アプリ内で注文が完了した際に Leeep.Analytics.order() で注文イベントを計測します。
詳しくはリファレンスを参照してください。
webの購入完了ページで既に ParteTracking.order() を実装済みで、アプリからの注文でもwebの購入完了ページを表示する場合、アプリ側の実装は不要です。詳しくはお問い合わせください。
サンプルコード
LEEEP iOS SDK 0.12.0以上では、フォローしているスタッフの新しいコーデ・ブログの通知をアプリで受け取るための登録・同期APIを利用できます。SDKを更新するだけで通知が有効になることはありません。Pushを利用するアプリで、以下の連携を追加してください。
アプリ側でFirebaseによる通知受信の動作確認が済み、FCMに登録済みのFirebase Installation ID(FID) と、現在のOS通知権限を取得できる状態を前提とします。LEEEPへ渡す通知先は登録済みFIDです。FCM登録トークン・APNsトークンや、FCM登録が確認できていないFIDは使用できません。
Firebaseの設定・登録・通知受信の実装はFirebaseのiOS向け公式ドキュメントをご参照ください。本記事では、準備済みのアプリとLEEEP SDKの連携を説明します。
ご利用のwebsiteでPush通知機能が有効になっていることを確認します。管理画面の「設定 → Push通知」が表示されない場合は、LEEEP担当者にお問い合わせください。
管理画面にアプリを登録し、website ID・PushアプリID・iOS Bundle IDを確認します。PushアプリIDはLEEEPの数値IDです。FirebaseのアプリIDやBundle IDとは異なります。
アプリで利用するFirebaseプロジェクトのサービスアカウントJSONを、LEEEP管理画面に登録します。LEEEPから通知を送信するための認証情報です。この秘密鍵をアプリに同梱しないでください。
websiteId と appId を実際の値に置き換えてください。同じwebsite・Pushアプリ・接続先について、クライアントを1つ保持します。画面の再描画ごとに作り直す必要はありません。
userId には、スタッフのフォローで使用している外部会員IDと同じ値を渡します。端末ID・FID・LEEEPのinstallation IDは会員IDの代わりになりません。SDKは会員IDの原文を保存しないため、アプリ再起動後もログイン状態の復元に合わせて identify を呼んでください。
次はSDK呼び出し部分の抜粋です。登録済みFIDやOS通知権限を非同期に確認・更新する処理を開始する前に update を取得し、同じ処理の完了時に渡します。
権限は実際のOS設定から判定します。許可済みかつアラート有効の場合が .granted、拒否が .denied、未選択が .notDetermined、仮許可が .provisional です。現在の配信対象は .granted の端末です。
会員切替・ログアウト前に開始した処理や、古いFIDの結果を新しい処理の結果として反映しないでください。詳細はPush APIリファレンスの更新チケットの説明をご覧ください。
OSの通知権限と、LEEEPの通知を受け取る同意は別々に扱います。identify 後、利用者が通知ON/OFFを選んだときに呼びます。起動のたびに自動でONへ戻さないでください。
各操作は非同期でサーバーへ同期します。戻り値だけで完了とせず、getStatus() またはコールバックを確認してください。通信復旧時は retry() で再試行できます。通知OFFは会員・Pushアプリ単位の購読設定、ログアウトはその端末と会員の紐付け解除です。
受け取った通知dataをSDKで解析し、結果をアプリ側の処理へ渡します。通知には対象を識別するIDなどが含まれます。
notificationData には通知のFCM data部分を渡します。APNsの aps などの配送メタデータは含めません。 expectedScope はアプリに設定した pushScope を使います。解析結果が nil の場合は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=nilになっていることを確認します。これは登録・同期の状態で、配信成功そのものではありません。LEEEP側でアプリの自動通知と配信が有効になっていることを確認します。
有効化後に対象スタッフが新しいコーデ・ブログを公開し、通知を受信できることと、解析結果の
ugcId・slugが対象投稿に一致することを確認します。通知OFF・ログアウト・OS通知拒否でも挙動を確認します。
Pushクライアントは通知を即時送信するAPIではありません。通知到着までには配信処理の待ち時間があります。管理画面の自動通知OFF中の過去投稿を、ONにしただけでまとめて送る用途にも使いません。
ショッピング系のアプリの場合、商品詳細画面でその商品に紐付く投稿を表示することがコンバージョン率の向上に有効です。
特定の商品が紐付く投稿だけを表示したい場合、 LeeepTagView() に productId を与えてください。もし該当する投稿が0件の場合、 LeeepTagView の高さは0になります。
詳しくはリファレンスを参照してください。
アプリ上で会員ログイン時にユーザーIDをこの関数に与え、ログアウト時に nil をこの関数に与えてください。
詳しくはリファレンスを参照してください。