0.2.3 • Published 4 years ago

com.beatles.unity.native-analytics v0.2.3

Weekly downloads
-
License
-
Repository
-
Last release
4 years ago

uNativeAnalytics

com.beatles.unity.native-analytics

package: "com.beatles.unity.native-analytics": "0.1.0"

uNativeAnalytics是一个将Facebook, Appsflyer, Firebase, 三个统计服务整合在一起的工具。他的优势有:

  • 性能,由于它的主要逻辑是放到了Native层,所以他的性能要优于AF,facebook的官方unity统计库。
  • 功能补齐,补齐某些平台上的功能缺失,将AF特有的归因属性设置到其他平台的UserProperty
  • 方便调试 统一了Log输出格式,并且支持IOS没有Xcode情况下log的输出。
  • 开放本地接口,本地的其他服务(例如广告SDK)可以直接使用本地的统计接口而不是先传送到Mono层,在由Mono层的逻辑负责分发。

快速开始

​ 首先加入对Facebook,和Firebase的依赖,详情

https://firebase.google.com/docs/unity/setup

https://developers.facebook.com/docs/app-events/getting-started-app-events-android#step-3--integrate-the-facebook-sdk-in-your-android-app

​ 初始和使用:

//初始化
GameAnalytics.Init(Env.DEBUG);
            
//设置AF相关配置
#if UNITY_ANDROID
GameAnalytics.SetAppId(Application.identifier);
#elif UNITY_IOS
GameAnalytics.SetAppId("1234567890");
#endif
GameAnalytics.SetAppsflyerDevKey("xxxxxxxxxxxxx");
            
//初始化Firebase
FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task =>
{
       var dependencyStatus = task.Result;
       if (dependencyStatus == DependencyStatus.Available)
       {
             //安装
            GameAnalytics.InstallPlatform(AnalyticsPlatform.Firebase);
       }
});

//初始化Facebook
FB.Init(() => 
      {
            //安装
            GameAnalytics.InstallPlatform(AnalyticsPlatform.Facebook);
}, OnHideUnity);


//使用范例
GameAnalytics.SetUserProperty("user_age", "20");
GameAnalytics.SetUserId("xxxxxxxxxx");
GameAnalytics.SendEvent("scr_show_home_page", new Dictionary { ["times_count"] = 2 });

API

  • SetUserProperty: 设置用户属性
  • SetUserId: 设置用户id
  • SendEvent: 发送事件

结构

之前的方案

image-20200624215800802

修改后

image-20200624220030646

//todo 阐述af和Facebook特别耗性能

由于Firebase和Facebook都是一个核心库+多个功能插件的形式,所以我们没有在这个库中做初始化FB和Firebase的操作.

Firebase/Facebook 流程

image-20200624222213887

如何测试

有两种方式测试

1.看本地log

  • android

    使用ADB过滤 Analytics

  • iOS

    1. 使用 Console 程序,首先在菜单栏 Action 选中 Include Info MessagesInclude Debug Messages
    2. 通过筛选 subsystem:AnalyticsLogger

2.服务提供商

存在的问题

1.目前SendEvent不支持多线程,请不要多线程访问SendEvent,不用紧张,得益于Unity的编程模型,这种问题很难出现 :)

2.Firebase 初始化可能出现线程锁死,导致ANR。这个问题报告在这里:

https://github.com/firebase/quickstart-unity/issues/600

https://github.com/firebase/quickstart-unity/issues/416

1.0.0计划:

  1. 规范接口

  2. 修复存在的问题

链接

Firebase Analytics : https://firebase.google.com/docs/analytics

Facebook Analytics: https://analytics.facebook.com/get-started/Apps#fq

Appsflyer: https://support.appsflyer.com/hc/en-us/categories/201114756-SDK-integration-

0.2.3

4 years ago