Cocos2d-x 集成openinstall(Android)

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.导入好的项目如下图,如果不是这个结构,请重新导入.

  1. 现在开始配置ndk的编译,选中菜单栏的Run -> Edit Configurations

5.然后选中+,添加外部工具

6.继续点+号

7.设置工具属性

8.然后点击两个ok后回到下面界面上

9.选中,1,点击上移,2,Apply,3,然后点击OK

  1. 点击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());  
                    }  
                }  
            });  
        }  
    }  
  
}  
复制代码
  1. 配置AndroidManifest.xml

在AndroidManifest.xml中添加权限声明

<uses-permission android:name="android.permission.INTERNET"/>  
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  
复制代码

在AndroidManifest.xml的application标签内设置AppKey

<meta-data  
    android:name="com.openinstall.APP_KEY"  
    android:value="xrut34"/>  
    
复制代码

在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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107645.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • error link2019无法解析的外部符号_inferior

    error link2019无法解析的外部符号_inferior最近在用VS2008开发,初学遇到不少问题,最头疼的问题之一就是:LNK2019。百度一下讲的并不够全面,反正都没解决我的问题。errorLNK2019问题在VC6.0中是errorLNK2001:unresolvedexternalsymbol问题,可能错误号改了。编译时出现类似这样的错误:Dlgcode.obj:errorLNK2019:无法解析的外部符号_readRe…

    2022年9月28日
    4
  • latex希腊字母表 加横线_latex花体字母怎么打

    latex希腊字母表 加横线_latex花体字母怎么打做成表格方便日常查看字母名称大写markdown小写markdownalphaAAα\alphabetaBBβ\betagammaΓ\Gammaγ\gammadeltaΔ\Deltaδ\deltaepsilonEEϵ\epsilonε\varepsilonzetaZZζ\zeta…

    2022年10月13日
    2
  • Ubuntu16.04安装搜狗拼音输入法(中文输入法)「建议收藏」

    Ubuntu16.04安装搜狗拼音输入法(中文输入法)「建议收藏」虽然网上有很多教程,但是我觉得我的很适合那些真正的小白。。。1、下载文件由于我要给多台电脑安装搜狗输入法,所以用的是文件夹安装,不是命令行安装。打开官网http://pinyin.sogou.c

    2022年8月2日
    4
  • Python浪漫表白源码(附带详细教程)

    Python浪漫表白源码(附带详细教程)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;要知道我们程序猿也是需要浪漫的,小博我之前在网上搜寻了很多代码缺发现好多都不是最新的,所以自己就整理了一下代码,现在与广大博友们分享下我们需要用到的包使用pipinstall+(包名)turtle2.random程序源码#ProjectLeader:刘#Project:表白源码

    2022年5月29日
    49
  • 关于G1收集器

    关于G1收集器G1(GarbageFirst)收集器是Oracle公司开发的一款主要面向服务端的拥有相对可靠的停顿预测模型的垃圾收集器。在垃圾收集器的历史上有着里程碑式的意义。与之前的收集器不同,G1不在基于固定的新生代与老年代的内存分配方式进行垃圾清理,而是使用了基于Region的内存分配的方式进行垃圾清理。这种方式使得G1在进行垃圾清理的时候不需要对整个新生代或老年代甚至整个Java堆进行垃圾清理,这样就极大的减少标记期间的停顿时间。设计思路:面向局部(单个或多个Region)收集内存布局:基于Regi

    2022年5月20日
    33
  • java 优先级队列_JAVA 队列

    java 优先级队列_JAVA 队列优先级队列是比栈和队列更专用的结构,在多数情况下都非常有用。优先级队列像普通队列一样,有一个队头和队尾,并且也是从队头移除数据。优先级队列中,数据按关键词有序排列,插入新数据的时候,会自动插入到合适的位置保证队列有序。举个例子来说,一组整型数,如果使用优先级队列的话,不管队列之前放入的数据如何,后面添加进去的数据总会被按照升序或者降序排列,当然这个只是优先级队列最基本的使用,在实际生产中可能有…

    2022年9月15日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号