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功能) 流程结束。

相关文章
|
9月前
|
NoSQL 应用服务中间件 PHP
布谷一对一直播源码android版环境配置流程及功能明细
部署需基于 CentOS 7.9 系统,硬盘不低于 40G,使用宝塔面板安装环境,包括 PHP 7.3(含 Redis、Fileinfo 扩展)、Nginx、MySQL 5.6、Redis 和最新 Composer。Swoole 扩展需按步骤配置。2021.08.05 后部署需将站点目录设为 public 并用 ThinkPHP 伪静态。开发环境建议 Windows 操作系统与最新 Android Studio,基础配置涉及 APP 名称修改、接口域名更换、包名调整及第三方登录分享(如 QQ、微信)的配置,同时需完成阿里云与腾讯云相关设置。
|
Android开发
Android开发表情emoji功能开发
本文介绍了一种在Android应用中实现emoji表情功能的方法,通过将图片与表情字符对应,实现在`TextView`中的正常显示。示例代码展示了如何使用自定义适配器加载emoji表情,并在编辑框中输入或删除表情。项目包含完整的源码结构,可作为开发参考。视频演示和源码详情见文章内链接。
347 4
Android开发表情emoji功能开发
|
安全 Android开发 iOS开发
Android vs iOS:探索移动操作系统的设计与功能差异###
【10月更文挑战第20天】 本文深入分析了Android和iOS两个主流移动操作系统在设计哲学、用户体验、技术架构等方面的显著差异。通过对比,揭示了这两种系统各自的独特优势与局限性,并探讨了它们如何塑造了我们的数字生活方式。无论你是开发者还是普通用户,理解这些差异都有助于更好地选择和使用你的移动设备。 ###
548 3
|
编解码 测试技术 Android开发
Android经典实战之用 CameraX 库实现高质量的照片和视频拍摄功能
本文详细介绍了如何利用CameraX库实现高质量的照片及视频拍摄功能,包括添加依赖、初始化、权限请求、配置预览与捕获等关键步骤。此外,还特别针对不同分辨率和帧率的视频拍摄提供了性能优化策略,确保应用既高效又稳定。
1659 1
Android经典实战之用 CameraX 库实现高质量的照片和视频拍摄功能
|
图形学 Android开发
小功能⭐️Unity调用Android常用事件
小功能⭐️Unity调用Android常用事件
|
开发工具 Android开发
上架Google Play报错:For new apps, Android App Bundles must be signed with an RSA key.
上架Google Play报错:For new apps, Android App Bundles must be signed with an RSA key.
383 1
|
Android开发 开发者
Android平台无纸化同屏如何实现实时录像功能
Android平台无纸化同屏,如果需要本地录像的话,实现难度不大,只要复用之前开发的录像模块的就可以,对我们来说,同屏采集这块,只是数据源不同而已,如果是自采集的其他数据,我们一样可以编码录像。
162 0
|
数据可视化 定位技术 Sentinel
如何用Google Earth Engine快速、大量下载遥感影像数据?
【2月更文挑战第9天】本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,批量下载指定时间范围、空间范围的遥感影像数据(包括Landsat、Sentinel等)的方法~
5189 1
如何用Google Earth Engine快速、大量下载遥感影像数据?
|
编解码 人工智能 算法
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
310 0
|
编解码 人工智能 数据库
Google Earth Engine(GEE)——全球道路盘查项目全球道路数据库
Google Earth Engine(GEE)——全球道路盘查项目全球道路数据库
392 0

热门文章

最新文章

推荐镜像

更多