Cocos Creator Android 平台接入 Google Firebase (Analytics功能)(二)

简介: Cocos Creator Android 平台接入 Google Firebase (Analytics功能)

(2)、添加Firebase SDK



A、在项目根目录 (Project) build.gradle 中添加如下内容:

dependencies {
     classpath 'com.google.gms:google-services:4.3.8'
    // ...
}





B、在应用级(app/build.gradle)中,添加如下内容:

apply plugin: 'com.google.gms.google-services'
dependencies {
 implementation platform('com.google.firebase:firebase-bom:28.3.0')
}





(3)、添加 Google Analytics(事件上报及分析)



A、在应用级(app/build.gradle)中,添加如下内容:



implementation 'com.google.firebase:firebase-analytics' 





B、 添加网络权限,已添加则忽略。

<uses-permission android:name="android.permission.INTERNET" />



C、java 封装事件上报接口,支持注册、登录、充值事件

public static void sendFireBaseEvent(final String a_name,final String a_json){
        Log.d(TAG, "sendFireBaseEvent:" + a_name + ":"+ a_json);
        if (TextUtils.isEmpty(a_name)) {
            Log.e(TAG, "sendFireBaseEvent. a_name isnull ");
            return;
        }
        final Bundle params = new Bundle();
        if (!TextUtils.isEmpty(a_json)) {
            try {
                JSONObject jsonObj = new JSONObject(a_json);
                if(a_name.equals(FirebaseAnalytics.Event.PURCHASE)){
                    String uid = jsonObj.get("af_content_id").toString();
                    double amount = jsonObj.getDouble("af_revenue");
                    String currency = jsonObj.get("af_currency").toString();
                    String content_type = jsonObj.get("af_content_type").toString();
                    params.putString("uid", uid);
                    params.putDouble(FirebaseAnalytics.Param.VALUE, amount);
                    params.putString(FirebaseAnalytics.Param.CURRENCY, currency);
                    params.putString(FirebaseAnalytics.Param.CONTENT_TYPE, content_type);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
        FirebaseAnalytics.getInstance(Application.getContext()).logEvent(a_name, params);
    }



D、ts 或js 代码封装 java 接口

export class Native {
   private static ApiAndroid: string = "org/cocos2dx/javascript/Native";
   private static ApiIOS: string = "AppController";
   public static sendFireBaseEvent(eventName: string, jsonStr: string = ""): string {
        // cc.log("sendAFEvent",eventName,JSON.stringify(jsonStr))
        let ret = "";
        if (cc.sys.isBrowser) {
        } else if (cc.sys.isNative) {
            if (cc.sys.os == cc.sys.OS_ANDROID) {
                ret = jsb.reflection.callStaticMethod(Native.ApiAndroid, "sendFireBaseEvent", "(Ljava/lang/String;Ljava/lang/String;)V",
                    eventName, jsonStr);
            }
            else if (cc.sys.os == cc.sys.OS_IOS) {
                // ret = jsb.reflection.callStaticMethod(Native.ApiIOS, "sendFireBaseEvent", null);
            }
        }
        return ret;
    }
}



E、ts 或js 代码中,使用注册、登录、充值事件上报

export enum FireBase_EVENT_ENUM {
    LOGIN = "login",
    REGIST = "sign_up",
    PURCHASE = "purchase",
}
Native.sendFireBaseEvent(FireBase_EVENT_ENUM.REGIST)
Native.sendFireBaseEvent(FireBase_EVENT_ENUM.LOGIN)
sendRechargeEvent(a_gold: number) {
        let afEventJson = JSON.stringify({
            "af_revenue": a_gold,
            "af_content_type": "web_pay",
            "af_content_id": PlayerInfo.get("dwUserID"),
            "af_currency": "INR",
        })
       console.log("上报充值事件", afEventJson)
      Native.sendFireBaseEvent(FireBase_EVENT_ENUM.PURCHASE, afEventJson) 
}



(3)、DebugView模式下测试



为什么要采用DebugView模式下测试?

这是因为正常事件上报有一定的延迟,不能进行实时反馈,采用DebugView 可以实时展示上报事件在控制台界面上。



首先,启动调试模式

adb shell setprop debug.firebase.analytics.app  com.example.test



然后,在控制台开启DebugView





如果接入ok,DebugView界面左上角会显示测试手机的型号:





如上图所示,DebugView模式下有数据,则说明 Firebase sdk接入就没什么问题。



如果没有显示手机型号可尝试以下操作:

  • 检测启动调试模式的adb命令是否正确
  • 检查测试设备是否开启了USB调试
  • 检查测试设备是否能访问google相关网站(科学上网)
  • 检查目标设备是否安装 google 服务



至此, Cocos Creator Android 平台接入 Google Firebase (Analytics功能) 流程结束。

相关文章
|
1月前
|
XML 缓存 Android开发
Android开发,使用kotlin学习多媒体功能(详细)
Android开发,使用kotlin学习多媒体功能(详细)
103 0
|
2月前
|
Android开发
安卓SO层开发 -- 编译指定平台的SO文件
安卓SO层开发 -- 编译指定平台的SO文件
32 0
|
3月前
|
存储 API Android开发
请解释Android的推送服务,如Firebase Cloud Messaging(FCM)。
请解释Android的推送服务,如Firebase Cloud Messaging(FCM)。
62 0
|
3月前
|
安全 Linux Android开发
Android 安全功能
Android 安全功能
37 0
|
3月前
|
IDE API 开发工具
Google I/O :Android Jetpack 最新变化(四)Compose
Google I/O :Android Jetpack 最新变化(四)Compose
106 0
|
28天前
Error:java.util.zip.ZipException: duplicate entry: com/google/firebase/iid/zzc.class ,EvalIssueExcep
Error:java.util.zip.ZipException: duplicate entry: com/google/firebase/iid/zzc.class ,EvalIssueExcep
7 0
|
3月前
|
API Android开发
Google I/O :Android Jetpack 最新变化(三)UI
Google I/O :Android Jetpack 最新变化(三)UI
49 0
|
5天前
|
Java Android开发
Android Mediatek 应用层重置USB设备功能
Android Mediatek 应用层重置USB设备功能
11 0
|
1月前
|
运维 监控 Java
应用研发平台EMAS产品常见问题之安卓构建版本失败如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
|
1月前
|
运维 监控 Android开发
应用研发平台EMAS常见问题之安卓push的离线转通知目前无法收到如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
25 1