この連携は、すでにBeacon Bankをご利用のお客様が対象になります。
Beacon Bank連携のプレスリリースはこちら
https://plaid.co.jp/news/20220126/
連携をご希望の際は、プレイドまでお問い合わせください。
連携概要
KARTEとBeacon Bankを連携させることにより、ユーザーのアプリ内行動(デジタル行動データ)と屋内外行動(リアル行動データ)を統合することが可能です。
Beacon Bank連携により、ユーザーのリアル行動データに応じて、プッシュ通知やアプリ内メッセージをパーソナライズしたり、その人の嗜好性や予兆行動を定量的に把握することで、デジタル広告施策やCRM施策の精度向上に活用したりするなど、リアルとデジタルをまたがって行動する顧客を360度で理解し、顧客体験価値の最大化を実現することができます。
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の導入手順は以下をご参照ください。
ネイティブアプリでの実装
以下に連携フロー図を記載します。
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にお問い合わせください。