Cocos2d-x 集成openinstall(Android)
目的:
1. Cocos2d-x集成openinstall sdk?
有这么一个场景,甲给乙分享了链接,乙使用并下载APP,推荐者甲和乙的关系这个思路是怎样的?
你首先想到的也许会说,那当然就是给对方一个邀请码去辨识啊。
1、扫码下载,二维码里面有甲的推荐邀请号
2、APP下载包在本服务器上下载,通过地址也是可以知道甲的邀请信息
3、在APP下载输入甲的邀请码
没错,这个是可以实现的,但是只是传统的做法,用户转化率严重低下。
另一种更创新性的实现方式就是:最近在使用一个叫openinstall的SDK,可以实现无码安装实现上述的场景,提高用户的转化率。通过它实现免填邀请码的功能,集成到Cocos2d-x游戏开发中。对App安装流程的优化,尤其是免填写邀请码安装,App推广的有奖邀请活动更大程度的达到推广爆炸式的效果。
在分享链接自定义各种动态参数(如推广渠道号,邀请码,游戏房间号,用户id等等)。通过在分享链接url中附带app邀请人的用户id,就可达到免填邀请码的效果;或者app通过在url中附带游戏房间号实现直达游戏房间也可建立上下级关系;Cocos2d-x开发中免不了邀请用户获得奖励;新老用户直达游戏场景;从各种浏览器一键拉起游戏场景等等。
那么如何在cocos2d-x集成openinstall呢?
一:环境配置
SDK,NDK,AN的配置请看 http://www.cnblogs.com/studweijun/p/4320778.html
1. 将新建的项目导入AndroidStudio,选项目里的pro.android-studio文件夹导入。
2.跳出主窗口后会跳出两个小窗口提示,一个窗口Gradle更新,一个是插件更新,没有的话继续,有的话可以更新
3.导入好的项目如下图,如果不是这个结构,请重新导入.
4. 现在开始配置ndk的编译,选中菜单栏的Run -> Edit Configurations
5.然后选中+,添加外部工具
6.继续点+号
7.设置工具属性
8.然后点击两个ok后回到下面界面上
9.选中,1,点击上移,2,Apply,3,然后点击OK
10. 点击ok,编译设置完毕,可以试着运行一下看看,是否编译了.
说明:起初项目编译不通过,老报同样的错误,通过网上找资料,发现我的ndk版本可能下错了,换成android-ndk-r9d,发现Cocos2d-x3.x对NDK的要求r9d
Ndk换成android-ndk-r9d重新编译通过~
二:接下来就是集成openinstall流程了:
1. 注册/登录openinstall开发者平台http://developer.openinstall.io/并创建应用
2. 下载导入SDK
3.新建自定义Application类 APP继承Application并初始化
App启动时,调用OpenInstall.init(context)方法完成sdk初始化;以下以自自定义APP为例
public class APP extends Application { @Override public void onCreate() { super.onCreate(); OpenInstall.init(this); } }
4.在AppActivity中编写代码
public class AppActivity extends Cocos2dxActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 在唤醒页面中如下调用相关代码,获取web端传过来的自定义参数 OpenInstall.getWakeUp(getIntent(), wakeUpAdapter); // 在APP需要个性化安装参数时(由web网页中传递过来的,如邀请码、游戏房间号等自定义参数), // 调用OpenInstall.getInstall方法,在回调中获取参数(可重复获取) getInstall(); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); // 此处要调用,否则App在后台运行时,会无法截获 OpenInstall.getWakeUp(intent, wakeUpAdapter); } AppWakeUpAdapter wakeUpAdapter = new AppWakeUpAdapter() { @Override public void onWakeUp(AppData appData) { //获取渠道数据 String channelCode = appData.getChannel(); //获取绑定数据 String bindData = appData.getData(); Log.d("OpenInstall", "getWakeUp : wakeupData = " + appData.toString()); Toast.makeText(AppActivity.getContext(),"wakeup:"+appData.toString(),Toast.LENGTH_SHORT).show(); } }; @Override protected void onDestroy() { super.onDestroy(); wakeUpAdapter = null; } public void getInstall(){ //获取OpenInstall数据 final SharedPreferences sp = getSharedPreferences("cocosdemo", MODE_PRIVATE); boolean needInstall = sp.getBoolean("needInstall", true); if (needInstall) { //是否需要多次调用getInstall获取参数 OpenInstall.getInstall(new AppInstallListener() { @Override public void onInstallFinish(AppData appData, Error error) { if (error == null) { if (appData == null || appData.isEmpty()) return; OpenInstall.reportRegister();//注册上报统计 Log.d("openinstall", "reportRegister success"); //获取自定义数据 Log.d("OpenInstall", "getInstall : bindData = " + appData.getData()); //获取渠道数据 Log.d("OpenInstall", "getInstall : channelCode = " + appData.getChannel()); //使用数据后,不想再调用,将needInstall设置为false sp.edit().putBoolean("needInstall", false).apply(); Toast.makeText(AppActivity.getContext(), "install:" + appData.toString(), Toast.LENGTH_SHORT).show(); } else { Log.e("OpenInstall", "getInstall : errorMsg = " + error.toString()); } } }); } } }
5. 配置AndroidManifest.xml
1,在AndroidManifest.xml中添加权限声明
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
2,在AndroidManifest.xml的application标签内设置AppKey
在AndroidManifest.xml中的application标签中添加android:name=".APP"指定自定义的Application类,以便程序启动的时候初始化自定义Application类,而不是系统默认的Application类
在AndroidManifest.xml的唤醒页面activity标签中添加intent-filter(一般为MainActivity),配置scheme,用于浏览器中拉起
6:打包上传安装包到openinstall后台测试:
测试
最后贴上demo下载地址:https://github.com/AnneCR/Cocos2D-openinstall
Cocos2d-x 集成openinstall(Android)的更多相关文章
- unity集成openinstall流程
目的 1.Unity集成openinstall sdk? 最近在使用一个叫openinstall的SDK,通过它实现免填邀请码的功能,集成到unity游戏开发中.对App安装流程的优化,尤其是免填写邀 ...
- Weex的环境搭建以及集成到Android项目
最近由于公司的需要,初步研究了Weex,Weex是阿里开发的一个web的框架,官方的介绍如下: Weex 是一套简单易用的跨平台开发方案,能以 web 的开发体验构建高性能.可扩展的 native 应 ...
- 将React Native集成至Android原生应用
将React Native集成至Android原生应用 Android Studio 2.1 Preview 4生成的空项目 react-native 环境 0.22.2 初次编译后apk有1.1M, ...
- 将linux和uboot集成到Android编译框架中
span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; }.CodeMirror ...
- OpenCV3.4.1快速集成到Android studio中,10分钟搞定
OpenCV3.4.1快速集成到Android studio中,10分钟搞定 转载 https://blog.csdn.net/yu540135101/article/details/8259 ...
- Jenkins 持续集成实现 Android 自动化打包
打 debug 包流程: git pull 分支最新代码 Android Studio:Build - Generate Signed APK 从 IDE 里可以看到,实际上该操作是执行了 assem ...
- unity3d与eclipse集成开发android应用
原地址:http://blog.csdn.net/armoonwei/article/details/7032537 Unity as a Library Once you have eclipse ...
- 面向基于英特尔® 架构的 Android* 的 CoCos2D
Cocos2D 是一款游戏引擎,可与从电脑到手机等多种设备配合使用. 该引擎支持丰富的特性,可帮助创建出色的 2D 游戏.它甚至包含具备全面功能的物理引擎. CoCos2D 的核心元素是基本动画元素( ...
- Kotlin与Android SDK 集成(KAD 05)
作者:Antonio Leiva 时间:Dec 19, 2016 原文链接:https://antonioleiva.com/kotlin-integrations-android-sdk/ 使用Ko ...
随机推荐
- python入门学习笔记(二)
6.6替换元素 7.tuple类型 7.1创建tuple 7.2创建单元素tuple 7.3"可变"的tuple 8.条件判断和循环 8.1,if语句 8.2,if... ...
- Windows下Nginx的启动、停止等基本命令
在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动.停止Nginx服务,重新载入Nginx等,下面我就进行一些简单的介绍. 1.启动: C:\server\nginx-1.0 ...
- ASP.NET没有魔法——ASP.NET MVC 模型绑定解析(上篇)
前面文章介绍了ASP.NET MVC中的模型绑定和验证功能,本着ASP.NET MVC没有魔法的精神,本章内容将从代码的角度对ASP.NET MVC如何完成模型的绑定和验证进行分析,已了解其原理. 本 ...
- Java三大特性(封装,继承,多态)
Java中有三大特性,分别是封装继承多态,其理念十分抽象,并且是层层深入式的. 一.封装 概念:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据 ...
- React Native填坑之旅 -- FlatList
在React Native里有很多种方法来创建可滚动的list.比如,ScrollView和ListView.他们都各有优缺点.但是在React Native 0.43里增加了两种行的list vie ...
- 设置TCP_USER_TIMEOUT参数来判断tcp连接是否断开
[TOC] 1. bug描述 前段时间遇到这样的一个问题,openstack一个控制节点宕机后,在宕机后一段时间内创建的虚拟机,一直卡在创建中的状态.有的甚至要等到16分钟之后虚拟机才会切换到下一个状 ...
- 最短路径问题(dijkstra-模板)
#include<bits/stdc++.h> using namespace std; ][]; ]; ]; ][]; int n,x,y,s,m,e; int k; double mi ...
- Spark SQL1.2测试
Spark SQL 1.2 运行原理 case class方式 json文件方式 背景:了解到HDP也能够支持Spark SQL,但官方文档是版本1.2,希望支持传统数据库.hadoop平台.文本格式 ...
- 为什么说DOM操作很慢
转自http://www.cnblogs.com/yuzhongwusan/articles/5275933.html 一直都听说DOM很慢,要尽量少的去操作DOM,于是就想进一步去探究下为什么大 ...
- Xamarin.Android 调用Web Api(通过ListView展示远程获取的数据)
xamarin.android如何调用sqlserver 数据库呢(或者其他的),很多新手都会有这个疑问.xamarin.android调用远程数据主要有两种方式: 在Android中保存数据或调用数 ...