集成准备

注册账号

使用MobSDK之前,需要先在MobTech官网注册开发者账号,并获取MobTech提供的AppKey和AppSecret,详情可以点击查看注册流程

下载.unitypackage包

打开 Github 下载 MobPush-For-Unity 项目,下载完成后直接双击或者在Unity里面选择打开 MobPush.unitypackage,导入相关资源和脚本到您的 Unity项目即可使用。

导入unitypackage

全部选择即可(其中Demo.cs 为API使用和页面示例,可删除)

修改unity 编译环境

Android 集成编译配置

资源修改

删掉Android目录下的 baseProjectTemplate.gradlelauncherTemplate.gradle文件

修改unity配置

使用系统的gradle配置文件

增加MobPush的gradle配置

修改baseProjectTemplate.gradle和launcherTemplate.gradle

(注:此处修改为新生成的baseProjectTemplate.gradle文件和launcherTemplate.gradle文件)

baseProjectTemplate.gradle 

1.在classpath 'com.android.tools.build:gradle'后添加mob的classpath

classpath "com.mob.sdk:MobSDK:+"

2.添加MobPush需要的maven地址

maven {    url "https://mvn.mob.com/android/"}

3.参考示例如截图

launcherTemplate.gradle 

1.修改launcherTemplate.gradle增加MobPush配置

apply plugin: 'com.mob.sdk'
MobSDK {appKey "xxxxxxxxx"appSecret "xxxxxxxxxx"MobPush {debugLevel 4devInfo {HUAWEI{appId "xxxxxxxxx"}XIAOMI {appId "xxxxxxx"appKey "5581830029242"}MEIZU {appId "xxxxx"appKey "3fc6d1acc7ea4f90a0304967ee3a74ae"}OPPO {appKey "xxxxxxxx"appSecret "c850609d8a0f492f8b9eeca1189aaec2"}VIVO {appId "xxxxxx"appKey "9b01729c-6140-4ad3-ac79-4c4543e12130"}}}
}

2.参考示例截图

 ## 在gradle.properties中添加代码

MobSDK.spEdition=FP

挂载MobPush如图

配置签名文件和包名

1.配置自己项目的签名文件

2.配置自己项目的包名

设置隐私授权回调

为保证您的App在集成MobSDK之后能够满足工信部相关合规要求,您应确保App安装首次冷启动且取得用户阅读您《隐私政策》授权之后,调用Mob提交到的隐私协议回传函数uploadPrivacyPermissionStatus回传隐私协议授权结果。 反之,如果用户不同意您App《隐私政策》授权,则不能调用uploadPrivacyPermissionStatus回传隐私协议授权结果。 详情参考:合规指南

//隐私授权接口调用,此接口务必不能漏调用,否则导致SDK不生效
mobPush.updatePrivacyPermissionStatus(true);

推送接口

初始化和绑定监听(gameObject.GetComponent)

void Start (){mobPush = gameObject.GetComponent();//初始化MobPushmobPush.onNotifyCallback = OnNitifyHandler;//消息回调监听mobPush.onTagsCallback = OnTagsHandler;//标签处理回调监听mobPush.onAliasCallback = OnAliasHandler;//别名处理回调监听mobPush.onDemoReqCallback = OnDemoReqHandler;//demo请求接口回调(为了方便测试,提供在客户端发送通知的接口,仅供测试时使用)mobPush.onRegIdCallback = OnRegIdHandler;//获取注册ID异步监听回调接口}void OnNitifyHandler (int action, Hashtable resulte){Debug.Log ("OnNitifyHandler");if (action == ResponseState.CoutomMessage){Debug.Log ("CoutomMessage:" + MiniJSON.jsonEncode(resulte));}else if (action == ResponseState.MessageRecvice){Debug.Log ("MessageRecvice:" + MiniJSON.jsonEncode(resulte));}else if (action == ResponseState.MessageOpened) {Debug.Log ("MessageOpened:" + MiniJSON.jsonEncode(resulte));}}
void OnTagsHandler (int action, string[] tags, int operation, int errorCode){Debug.Log ("OnTagsHandler  action:" + action + " tags:" + String.Join (",", tags) + " operation:" + operation + "errorCode:" + errorCode);}
void OnAliasHandler (int action, string alias, int operation, int errorCode){Debug.Log ("OnAliasHandler action:" + action + " alias:" + alias + " operation:" + operation + "errorCode:" + errorCode);}
void OnRegIdHandler (string regId){Debug.Log ("OnRegIdHandler-regId:" + regId);}
void OnDemoReqHandler (bool isSuccess){Debug.Log ("OnDemoReqHandler:" + isSuccess);}

发送本地通知(LocalNotifyStyle )

LocalNotifyStyle style = new LocalNotifyStyle ();
style.setContent ("Text");
style.setTitle ("title");#if UNITY_ANDROID
Hashtable extras = new Hashtable ();
extras["key1"] = "value1";
extras["key2"] = "value1";
style.setExtras (extras);
#endif
mobPush.setMobPushLocalNotification (style);

自定义通知栏样式( CustomNotifyStyle)

CustomNotifyStyle style = new CustomNotifyStyle ();#if UNITY_IPHONE
style.setType(CustomNotifyStyle.AuthorizationType.Badge | CustomNotifyStyle.AuthorizationType.Sound |      CustomNotifyStyle.AuthorizationType.Alert);#elif UNITY_ANDROIDstyle.setContent ("Content");
style.setTitle ("Title");
style.setTickerText ("TickerText");#endif
mobPush.setCustomNotification(style);

获取注册ID (getRegistrationId)

mobPush.getRegistrationId();

添加标签 (addTags)

String[] tags = { "tags1", "tags2", "tags3" };
mobPush.addTags(tags);

获取标签 (getTags)

mobPush.getTags();

删除标签 (deleteTags)

String[] tags = { "tags1", "tags2", "tags3" };
mobPush.deleteTags(tags);

清除全部标签 (cleanAllTags )

mobPush.cleanAllTags();

添加别名 (addAlias)

mobPush.addAlias("alias");

获取别名 (getAlias)

mobPush.getAlias();

清除别名 (cleanAllAlias)

mobPush.cleanAllAlias();

停止通知服务 (stopPush)

mobPush.stopPush();

重启通知服务 (restartPush)

mobPush.restartPush();

判断通知是否被停止,返回值:bool类型(isPushStopped)

mobPush.isPushStopped();

点击通知后是否打开应用首页(setClickNotificationToLaunchPage)

mobPush.setClickNotificationToLaunchPage(false);

添加混淆配置

为了防止二次混淆MobPush,需要在项目混淆文件中添加:

-keep class com.mob.**{*;}-dontwarn com.mob.**

如果同时集成了华为、小米、魅族等渠道推送,同时也需要在项目中添加防二次混淆配置:

-keep class com.huawei.**{*;}-keep class com.meizu.**{*;}-keep class com.xiaomi.**{*;}-keep class android.os.SystemProperties

MobPush Android For Unity相关推荐

  1. Android与Unity的交互

    Android与Unity的交互方式 Unity做好功能之后提供classes.jar文件,导入到Android Studio中进行之后的功能开发.最后由Android Studio打包APK. An ...

  2. Android 与 Unity(随笔录)

    前言 最近换了工作,公司是做康复领域的,由于项目需求需要,Android产品中必须加入VR元素,将虚拟场景与Android融合,打造一个用户满意的产品. 本人是做Android开发的,思考的是把Uni ...

  3. Android与Unity交互及手机震动控制

    背景 Unity开发过程中,自身提供的API或方案无法满足需求时,就需要Android工程交互通信.网络上交互方案很多,通常为jar包和aar包,经过对比本人采用aar包来实现,过程相对简单. Uni ...

  4. Unity Android 之 Unity Android 交互(aar形式)动态申请权限功能实现(权限可人为怎加删减,并含代码工程)

    Unity Android 之 Unity Android 交互(aar形式)动态申请权限功能实现(权限可人为怎加删减,并含代码工程) 目录

  5. 【Unity3D学习记录#2】Android调用Unity界面 与 信息交互

    [Unity3D学习记录#2]Android调用Unity界面 与 信息交互 Android 调用 Unity Unity项目构建 Android项目构建 Android 与 Unity 的信息交互 ...

  6. Android和Unity互调

    目录 1.工具 2.流程 见下图 ​ 3.具体过程 3.1 unity程序编写 3.1.1 创建Unity项目 3.1.2 制作相关控件 3.1.3 编写脚本 3.2 unity 项目导出 3.2.1 ...

  7. unity android 启动,Android启动Unity

    例如在一个android项目中,点击一个按钮,启动unity for android. 1.首先在Unity 引擎中将Unity3D项目build一下,需要在build settings--> ...

  8. unity Android 剪贴板,Unity移动端的复制要这么写示例代码

    前言 Unity官网提供了详尽的文档和丰富的教学视频,昨天跟着视频做了一个简单的3d游戏"roll-a-ball".游戏涉及了许多Unity的基本知识,用来入门很不错. 本文主要给 ...

  9. unity android 分包,Unity以分包(obb)形式集成到安卓原生 我慢慢填坑

    Unity以分包(obb)形式集成到安卓原生 我慢慢填坑 Unity以分包(obb)形式集成到安卓原生 我慢慢填坑 工作中有需要将unity项目集成到安卓原生中,随着工作推进需要分包去发布到googl ...

最新文章

  1. 50个查询系列-第二个查询
  2. ViewPager 详解(五)-----使用Fragment实现ViewPager滑动
  3. 哈夫曼编码 译码java_基于Java的哈夫曼编码译码系统_报告毕业论文
  4. hikaridatasource 加密后登陆不上_渗透测试 | 突破前端JS加密限制
  5. GitHub for Windows使用教程(一)安装配置
  6. 自学python需要安装什么-学Python需要安装什么软件?Python软件工具大全
  7. python调用r语言函数_Python 中使用R语言
  8. 游戏服务器架构演化史
  9. 微信公众平台后台数据如何分析
  10. 案例 | 苏州农村商业银行金融云平台支撑互联网创新业务发展
  11. 傅里叶变换音频可视化_音频可视化中的信号处理方案
  12. 360极速了浏览器 HTML5的浏览器,360极速浏览器4大HTML5特性 领先全球
  13. 甘特图——项目管理的理想控制工具
  14. FFmpeg提取视频音乐
  15. 2022大学生寒假社会实践活动稿件怎样向新闻媒体投稿?
  16. 4T磁盘只有2T可用,将mbr转为gpt安装操作系统。
  17. 能取代90%人工作的ChatGPT到底牛在哪?
  18. std::vector中 begin()、end()、front()、back()的区别
  19. iconv命令utf-8文件转为gbk文件
  20. Android开启热点后作为路由器,获取AP端IP地址

热门文章

  1. 单片机最小系统的通俗易懂讲解
  2. 热烈欢迎碧雯全国代理商莅临我司化妆品生产基地参观
  3. 图像处理基础学习笔记——OpenCV已学API汇总
  4. Three.js——向量操作函数
  5. VSCode登录Microsoft账户无效
  6. instr 限制 oracle,ORACLE结合mapper.xml讨论instr函数匹配时,若参数值长度超出了instr函数长度的限制解决方法...
  7. 阿里云 Redis安装
  8. 计算机图形学曲线算法代码,计算机图形学自由曲线绘制算法.doc
  9. 【文件包含漏洞-02】文件包含漏洞原理、简单测试实例以及空字符绕过实例
  10. SDL_Surface表面