华为分析服务预置大量分析模型,可帮助您清晰地了解用户的行为方式,从而实现用户、产品、内容的深度洞察,让您实现基于数据驱动的运营,可以就应用营销和产品优化制定明智的决策。
Analytics Kit采集端侧数据,用于支持Analytics功能:
Google Analytics SDK封装了不同种类的事件匹配类型方便您使用,例如:屏幕视图,事件,社交,电子商务等。您在设置事件的操作类型后通过track()上报事件。
Analytics Kit SDK是基于事件分析数据模型,所有事件均使用事件名称和事件参数进行分类。分析数据模型采用了Event-Param-User模型来记录数据,通过不同的参数对事件进行描述,同时对用户的特征也进行了描述。
Google Analytics Product Action | HUAWEI Analytics Kit Event |
|---|---|
ACTION_ADD | |
ACTION_CHECKOUT | |
ACTION_CHECKOUT_OPTION | |
ACTION_CLICK | |
ACTION_DETAIL | |
ACTION_PURCHASE | |
ACTION_REFUND | |
ACTION_REMOVE | |
ACTION_VIEW |
Google Analytics Property | HUAWEI Analytics Kit Property |
|---|---|
category | |
product_id | |
name | |
price | |
quantity | |
query | |
shipping | |
tax | |
order_id | |
currency | |
couponCode |
如果事件名称(属性)不在上述映射关系中,则可以自定义事件名称,然后通过onEvent()上报。预置事件模型对应的属性参数请参见预置事件。
Google Analytics SDK与Analytics Kit SDK主要的API对比,具体API使用详情请参见API参考。
Google Analytics SDK | HUAWEI Analytics Kit SDK | 说明 |
|---|---|---|
getInstance(Context context) | getInstance(Context context) | 获取Instance单例。 |
enableAutoActivityReports(Application application) | setAnalyticsEnabled(boolean isEnabled) | 是否打开打点采集能力。关闭后将不再记录任何数据。 |
send(Map<String, String> params) | onEvent(String eventId, Bundle params) | 记录自定义事件。 |
enableAutoActivityTracking(boolean enabled) | NA | HMS Core Analytics SDK自动上报Activity页面事件。 |
HitBuilders.ScreenViewBuilder() | pageStart(String pageName, String pageClassOverride) pageEnd(String pageName) | 自定义页面开始和结束事件采集。 |
配置导入成功后,在第一个Activity的onCreate中初始化Analytics Kit,获得HiAnalyticsInstance实例。若agconnect-services.json文件不正确,则无法进行打点。
获取HiAnalyticsInstance实例后就可以调用onEvent打点数据了。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); HiAnalyticsTools.enableLog(); HiAnalyticsInstance instance = HiAnalytics.getInstance(this); Bundle bundle = new Bundle(); bundle.putString(CATEGORY, "screen"); bundle.putString(PRODUCTNAME, "screen name"); instance.onEvent(VIEWPRODUCT, bundle); }
根据事件映射参考与事件属性映射参考的事件模型映射参考表,将Google Analytics SDK定义的事件转换为Analytics Kit SDK中对应的预制模型。相关事件模型参数请参见预置事件。
以下是Google Analytics SDK打点用户购买商品事件迁移到Analytics Kit SDK示例。
Context context = this; // Google Analytics SDK打点用户购买商品事件 HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder(); builder.setProductAction( new ProductAction(ProductAction.ACTION_PURCHASE) .setTransactionId("TT-1234") .setTransactionRevenue(3.14) .setTransactionCouponCode("EXTRA100")) .addProduct(new Product().setId("PID-4321").setName("Water Monkeys!")); Tracker tracker = new Tracker(); // 获取Tracker tracker.send(builder.build()); // Analytics Kit SDK打点用户购买商品事件 Bundle purchaseBundle = new Bundle(); purchaseBundle.putString(TRANSACTIONID, "TT-1234"); purchaseBundle.putDouble(REVENUE, 3.14); purchaseBundle.putString(VOUCHER, "EXTRA100"); HiAnalyticsInstance instance = HiAnalytics.getInstance(context); instance.onEvent(COMPLETEPURCHASE, purchaseBundle );
AppMeasurementReceiver()和onReceive(Context context, Intent intent)方法修改参考。
已经使用Convertor工具进行了转换。
修改前:
import org.xms.g.measurement.AppMeasurementReceiver;
…
@Override
public void onReceive(Context context, Intent intent) {
…
AppMeasurementReceiver receiver = new AppMeasurementReceiver();
receiver.onReceive(context, intent);
…
} 修改后:
import com.google.android.gms.measurement.AppMeasurementReceiver;
…
@Override
public void onReceive(Context context, Intent intent) {
…
AppMeasurementReceiver receiver;
if (!org.xms.g.utils.GlobalEnvSetting.isHms()) {
receiver = new AppMeasurementReceiver ();
receiver.onReceive(context, intent);
}
…
} AppMeasurementInstallReferrerReceiver()和onReceive(Context context, Intent intent)方法修改参考。
已经使用Convertor工具进行了转换。
修改前:
import org.xms.g.measurement.AppMeasurementInstallReferrerReceiver;
…
@Override
public void onReceive(Context context, Intent intent) {
…
AppMeasurementInstallReferrerReceiver receiver = new AppMeasurementInstallReferrerReceiver();
receiver.onReceive(context, intent);
…
} 修改后:
import com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver;
…
@Override
public void onReceive(Context context, Intent intent) {
…
AppMeasurementInstallReferrerReceiver receiver;
if (!org.xms.g.utils.GlobalEnvSetting.isHms()) {
receiver = new AppMeasurementInstallReferrerReceiver();
receiver.onReceive(context, intent);
}
…
} HMS Core Analytics SDK默认会自动采集Activity页面事件,不需要手动埋点;非Activity的页面事件采集建议使用pageStart(String pageName, String pageClassOverride)和pageEnd(String pageName)接口。
// todo
import com.google.firebase.analytics.FirebaseAnalytics;
…
@Override
protected void onResume() {
super.onResume();
…
// todo
if (!org.xms.g.utils.GlobalEnvSetting.isHms()) {
FirebaseAnalytics instanceFA = FirebaseAnalytics.getInstance(this);
instanceFA.setCurrentScreen(this, "ScreenName", null);
}
…
} import org.xms.f.analytics.ExtensionAnalytics;
…
@Override
public void onResume() {
super.onResume();
…
ExtensionAnalytics instanceFA = ExtensionAnalytics.getInstance(this.getActivity());
instanceFA.setCurrentScreen(this.getActivity(), "ScreenName", "com.test.Fragment");
…
} 修改后:
// todo
import com.google.firebase.analytics.FirebaseAnalytics;
import com.huawei.hms.analytics.HiAnalytics;
import com.huawei.hms.analytics.HiAnalyticsInstance;
…
@Override
public void onResume() {
super.onResume();
…
// todo
if (org.xms.g.utils.GlobalEnvSetting.isHms()) {
HiAnalyticsInstance instanceHA = HiAnalytics.getInstance(this.getActivity());
instanceHA.pageStart("ScreenName", "com.test.Fragment");
} else {
FirebaseAnalytics instanceFA = FirebaseAnalytics.getInstance(this.getActivity());
instanceFA.setCurrentScreen(this.getActivity(), "ScreenName", "com.test.Fragment");
}
…
}
...
@Override
public void onPause() {
super.onPause();
...
// todo
if (org.xms.g.utils.GlobalEnvSetting.isHms()) {
HiAnalyticsInstance instanceHA = HiAnalytics.getInstance(this.getActivity());
instanceHA.pageEnd("ScreenName");
}
...
} HMS Core Analytics SDK默认会自动采集Activity页面事件,不需要手动埋点,建议删除setCurrentScreen(Activity, String, String)接口相关代码。
import com.google.firebase.analytics.FirebaseAnalytics;
…
@Override
public void onResume() {
super.onResume();
…
FirebaseAnalytics instanceFA = FirebaseAnalytics.getInstance(this.getActivity());
instanceFA.setCurrentScreen(this.getActivity(), "ScreenName", "com.test.Fragment");
…
} 修改后:
import com.huawei.hms.analytics.HiAnalytics;
import com.huawei.hms.analytics.HiAnalyticsInstance;
…
@Override
public void onResume() {
super.onResume();
…
// todo
HiAnalyticsInstance instanceHA = HiAnalytics.getInstance(this.getActivity());
instanceHA.pageStart("ScreenName", "com.test.Fragment");
…
}
...
@Override
public void onPause() {
super.onPause();
...
// todo
HiAnalyticsInstance instanceHA = HiAnalytics.getInstance(this.getActivity());
instanceHA.pageEnd("ScreenName");
...
}