この連携は、すでにBeacon Bankをご利用のお客様が対象になります。

Beacon Bank連携のプレスリリースはこちら
https://press.plaid.co.jp/data/20220126/

連携をご希望の際は、プレイドまでお問い合わせください。

連携概要

KARTEとBeacon Bankを連携させることにより、ユーザーのアプリ内行動(デジタル行動データ)と屋内外行動(リアル行動データ)を統合することが可能です。
Beacon Bank連携により、ユーザーのリアル行動データに応じて、プッシュ通知やアプリ内メッセージをパーソナライズしたり、その人の嗜好性や予兆行動を定量的に把握することで、デジタル広告施策やCRM施策の精度向上に活用したりするなど、リアルとデジタルをまたがって行動する顧客を360度で理解し、顧客体験価値の最大化を実現することができます。

null

KARTE → Beacon Bankへの連携

できること

  • KARTEで計測しているユーザーのユーザー識別子を、リアルタイムにBeacon Bankに連携します。
  • KARTE Datahubを介して、KARTEとBeacon Bankを相互にデータ連携をすることが可能になります。

想定される利用シナリオ

  • ユーザーのデジタル行動データとリアル行動データを統合・分析することで、デジタルとリアルをまたがって行動する顧客を360度で理解したい

Beacon Bank → KARTEへの連携

できること

  • Beacon Bankで発生したイベント(以降、Beacon Bankイベント)には、特定のビーコンやエリア(ジオフェンス)への接近/滞在情報が付与されています。
  • KARTE上のユーザー(メンバー / ビジター両方)に対して、 Beacon Bankイベントを紐付けることが可能になります。
  • Beacon Bankイベントを使ったセグメントの作成、接客サービスの配信トリガーの設定が可能になります。
  • KARTE Datahubを介して、KARTEとBeacon Bankを相互にデータ連携をすることが可能になります。

想定される利用シナリオ

  • 特定のビーコンへの反応や端末の位置情報に応じて、プッシュ通知の内容をパーソナライズしたい
  • 特定のビーコンへの反応や端末の位置情報に応じて、アプリ内メッセージをパーソナライズしたい
  • ユーザーのデジタル行動データとリアル行動データを統合・分析することで、デジタルとリアルをまたがって行動する顧客を360度で理解したい

連携に必要な準備、実装

  • KARTE SDKおよびBeacon Bank SDKの組み込みが完了していることを前提とします。
  • Beacon Bank SDKの導入手順は以下をご参照ください。

ネイティブアプリでの実装

以下に連携フロー図を記載します。

null

1. ID連携

KARTE SDKで発行したユーザー識別子(visitor_id)を、Beacon Bank SDKを使って送信します。

以下にサンプルコードを記載します。

iOSの場合

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    KarteApp.setup()

    BB_BeaconManager.sharedInstance.delegate = self
    BB_BeaconManager.sharedInstance.autoNotifyBeaconContent = true
    BB_BeaconManager.sharedInstance.initialize(apikey: UNERRY_API_KEY) 
    BB_BeaconManager.sharedInstance.startMonitoring()

    if launchOptions != nil {
        BB_BeaconManager.sharedInstance.onDidFinishLaunchingWithOptions(launchOptions: launchOptions! as NSDictionary)
    }

    BB_BeaconManager.sharedInstance.setExtraInfo(extra1:KarteApp.visitorId, extra2:"")
    return true
}

Androidの場合

public void onCreate() {
    super.onCreate();
    KarteApp.setup(this)

    bbManager.delegate = this;
    bbManager.isAutoNotifyBeaconContent = true;
    bbManager.initialize(UNERRY_API_KEY);
    bbManager.startMonitoring();

    bbManager.setExtraInfo(KarteApp.getVisitorId(),"");
}

2. イベント連携(ビーコン電波が検出された)

Beacon Bank SDKで取得可能な位置情報(ビーコン電波が検出された)を、KARTE SDKを使って送信します。

以下にサンプルコードを記載します。

iOSの場合

func didBeaconFound(beaconId:Int64, rssi:Int, groups: [BB_GroupInfo], userGroups: [BB_UserGroupInfo], contents: [BB_ContentInfo], attributes: Dictionary<String, Any>) {
    var values = [String : JSONConvertible]()
    values["beacon_id"] = beaconId
    values["rssi"] =  rssi

    var groupListVal:Array<JSONConvertible> = Array()

    for group in groups {
        var groupVal = [String : JSONConvertible]()
        groupVal["group_id"]       = group.id
        groupVal["group_name"]     = group.name
        groupVal["extra_info"]     = group.extraInfo
        groupVal["content_ids"]    = group.contentIds.compactMap({ $0 as? JSONConvertible })
        groupVal["user_group_ids"] = group.userGroupIds.compactMap({ $0 as? JSONConvertible })

        groupListVal.insert(groupVal, at: 0)
    }

    values["groups"] = groupListVal
    let unerryInfo: [String: JSONConvertible] = [
        "unerry_info" : values
    ]

    Tracker.track( "_unerry_didBeaconFound", values: unerryInfo)
}

Androidの場合

@Override
public void didBeaconFound(long beaconId, int rssi, @NotNull List<GroupInfo> groups, @NotNull List<UserGroupInfo> userGroups, @NotNull List<ContentInfo> contents, @NotNull Map<String, String> attributes) {
    Map<String, Object> values = new HashMap<>();
    values.put("beacon_id", beaconId);
    values.put("rssi", rssi);

    ArrayList<Object> groupListVal = new ArrayList<>();

    for (GroupInfo group: groups){
        Map<String, Object> groupsVal=  new HashMap<>();
        groupsVal.put("group_id", group.getId());
        groupsVal.put("group_name", group.getName());
        groupsVal.put("extra_info", group.getExtraInfo());
        groupsVal.put("content_ids", group.getContentIds());
        groupsVal.put("user_group_ids", group.getUserGroupIds());

        groupListVal.add(groupsVal);
    }

    values.put("groups", groupListVal);
    Map<String, Object> unerryInfo = new HashMap<>();
    unerryInfo.put("unerry_info", values);

    Tracker.track("_unerry_didBeaconFound", unerryInfo);
}

3. イベント連携(ビーコン電波が検出されなくなった)

Beacon Bank SDKで取得可能な位置情報(ビーコン電波が検出されなくなった)を、KARTE SDKを使って送信します。

以下にサンプルコードを記載します。

iOSの場合

func didBeaconExit(beaconId:Int64, groups: [BB_GroupInfo], userGroups: [BB_UserGroupInfo], contents: [BB_ContentInfo]) {
    var values = [String : JSONConvertible]()
    values["beacon_id"] = beaconId

    var groupListVal:Array<JSONConvertible> = Array()

    for group in groups {
        var groupVal = [String : JSONConvertible]()
        groupVal["group_id"]       = group.id
        groupVal["group_name"]     = group.name
        groupVal["extra_info"]     = group.extraInfo
        groupVal["content_ids"]    = group.contentIds.compactMap({ $0 as? JSONConvertible })
        groupVal["user_group_ids"] = group.userGroupIds.compactMap({ $0 as? JSONConvertible })

        groupListVal.insert(groupVal, at: 0)
    }

    values["groups"] = groupListVal
    let unerryInfo: [String: JSONConvertible] = [
        "unerry_info" : values
    ]

    Tracker.track( "_unerry_didBeaconExit", values: unerryInfo)
}

Androidの場合

@Override
public void didBeaconExit(long beaconId, @NotNull List<GroupInfo> groups, @NotNull List<UserGroupInfo> userGroups, @NotNull List<ContentInfo> contents) {
    Map<String, Object> values = new HashMap<>();
    values.put("beacon_id", beaconId);

    ArrayList<Object> groupListVal = new ArrayList<>();

    for (GroupInfo group: groups){
        Map<String, Object> groupsVal=  new HashMap<>();
        groupsVal.put("group_id", group.getId());
        groupsVal.put("group_name", group.getName());
        groupsVal.put("extra_info", group.getExtraInfo());
        groupsVal.put("content_ids", group.getContentIds());
        groupsVal.put("user_group_ids", group.getUserGroupIds());

        groupListVal.add(groupsVal);
    }

    values.put("groups", groupListVal);
    Map<String, Object> unerryInfo = new HashMap<>();
    unerryInfo.put("unerry_info", values);    

    Tracker.track("_unerry_didBeaconExit", unerryInfo);
}

4. イベント連携(端末の位置情報が更新された)

Beacon Bank SDKで取得可能な位置情報(端末の位置情報が更新された)を、KARTE SDKを使って送信します。

以下にサンプルコードを記載します。

iOSの場合

func didUpdateLocations(location: CLLocation?) {
    var values = [String : JSONConvertible]()
    var latlng: [JSONConvertible]  = Array()

    if( location == nil ){
        return
    }

    let lat:JSONConvertible  = location?.coordinate.latitude ?? 0
    let lng:JSONConvertible  = location?.coordinate.longitude ?? 0

    latlng = [lng, lat]
    values["latlng"] = latlng

    let unerryInfo: [String: JSONConvertible] = [
        "unerry_info" : values
    ]

    Tracker.track( "_unerry_didUpdateLocations", values: unerryInfo);
}

Androidの場合

@Override
public void didUpdateLocations(@NotNull Location location) {
    Map<String, Object> values = new HashMap<>();

    if( location == null ){
        return
    }

    values.put("latlng", Arrays.asList(location.getLongitude(), location.getLatitude()));

    Map<String, Object> unerryInfo = new HashMap<>();
    unerry_info.put("unerry_info", values);

    Tracker.track("_unerry_didUpdateLocations", unerryInfo);
}

BeaconBankイベントとKARTEイベントの対応

イベント名とパラメータの対応表

Beacon Bankイベントと、KARTEで発生するイベント名およびパラメータの対応表を以下に記載します。

Beacon Bankイベント KARTEイベント KARTEイベントに設定されるパラメータ
setExtraInfo なし 参考:iOS/Android
didBeaconFound _unerry_didBeaconFound 参考:iOS/Android
didBeaconExit _unerry_didBeaconExit 参考:iOS/Android
didUpdateLocations _unerry_didUpdateLocations 参考:iOS/Android

注意点

広告ID(IDFA/AAID)の連携について

Beacon Bank連携では、広告ID(IDFA/AAID)はKARTEに連携されません。

iOS 14の影響について

Beacon Bank連携に際しては、IDFAを用いておりません。

Beacon Bankの仕様について

Beacon Bankの仕様の詳細に関しては、株式会社unerryにお問い合わせください。