QtAndroid详解(6):集成信鸽推送

推送是我们开发移动应用经常用到的功能,Qt on Android 应用也会用到,之前也有朋友问过,这次我们来看看怎么在 Qt on Android 应用中来集成来自腾讯的信鸽推送。

有关信鸽的 SDK 和集成指南,请到这里(http://xg.qq.com/)查看。本文是参考腾讯信鸽的在线帮助完成的。信鸽的 WIKI 和文档已经做得很好了,照着做就是,这里只讲 Qt 中集成信鸽时的步骤和注意事项。

这次我们要写一点点 Java 代码,就几行,如何做,可以参考《Qt on Android核心编程》一书,也可以参考我博客上的文章“Qt on Android:使用JNI与第三方jar包”。下面我就开讲了。

我使用 Qt SDK 5.3.1 ,在 Windows 平台上开发,信鸽版本 2.37 。

信鸽SDK

信鸽的 SDK 可以在 http://xg.qq.com/ 这里下载到。

信鸽的快速集成指南:点我去看啦

这里如何快速集成就不说了,人家说得很明白。

Qt on Android集成信鸽

这里是本文的重点。

我创建了一个简单的 Qt QWidgets App ,项目名字是 xgPushDemo ,具体过程略去,参考《Qt on Android核心编程》或者“Qt on Android:图文详解Hello World全过程”。

AndroidManifest.xml

必须创建 AndroidManifest.xml 文件,这个可以用 Qt Creator 来完成。

包名与图标

创建之后,修改包名为 an.qt.xgPushDemo 。这个包名,我们在 xg.qq.com 上要用到,你在 xg 上创建应用时需要指定包名,必须和这里一致。

给你的应用指定一个图标,必须的,否则信鸽推送通知时,找不到应用图标,显示不出来。

好啦,下面是我的配置,供参考:

图 1 Qt Creator中修改AndroidManifest.xml

如图1所示,我改了包名,也设置了应用图标(偷信鸽demo的图标)。

信鸽的配置

接下来还要在 AndroidManifest.xml 中给信鸽增加一些配置,下图供参考:

图 2 为信鸽配置 AndroidManifest.xml

如图2所示,我标注了三处必须修改的地方,请注意。

还有一些权限的配置,我没有列出来,直接拷贝信鸽快速集成指南里的说明即可。

Actvitiy配置

实际上我们这次要引入一个 Java 文件,定义了一个名为 QtPushDemoActivity 的类来作为我们应用的入口 Activity 。对应的,也需要修改 AndroidManifest.xml 文件。请打开 AndroidManifest.xml 文件,切换到 “XML Source” 模式直接修改,找到 <activity>标签,把 “andorid:name” 这个属性,修改为:

android:name="an.qt.xgPushDemo.QtPushDemoActivity"

嗯,就这样,原来是 QtActivity ,使用 Qt 提供的 Activity 作为应用入口,我们修改为 QtPushDemoActivity 这个我们自己写的 Activity ,后面会讲到。

信鸽SDK的jar文件

信鸽 SDK 解压后,打开 “Xg-Push-SDK-Android-2.37\Xg-Push-SDK-Android\libs” 目录。如下图:

图3 信鸽SDK里的jar文件

我用红线标注的三个 jar 文件,必须要拷贝到我们的项目目录下。

android-support-v4.jar也拷贝一下。

我们创建了 AndroidManifest.xml 后,在项目根目录下会生成名为 Android 的文件夹,jar文件请拷贝到 android/libs 目录下。如下图所示:

图4 Qt项目目录下的jar文件

注意,Qt项目下的android目录内,默认没有 libs 子目录,自己建一个即可。

信鸽so文件

信鸽除了 jar 文件,还有两个 so 文件,必须要拷贝到Qt项目目录下。

so在“Xg-Push-SDK-Android-2.37\Xg-Push-SDK-Android\All-Platforms-SO”目录下,如图:

图5 信鸽so文件

如图5所示,直接把 armeabi 和 armeabi-v7a 都拷贝到 Qt 项目目录下。拷贝完成后如下图所示:

图6 Qt项目下的libs目录

好啦,集成信鸽SDK需要的文件就搞完了。关于 jar 、 so 等文件,我们只要按照这种目录结构放在那里,Qt Creator在编译、部署时就会把它们打包到APK中,而我们在 Java 代码中也可以直接访问它们。

注册service

要使用信鸽,必须在你的应用启动后注册service。这个动作要在 Java 代码中完成。

还记得我们的包名——“an.qt.xgPushDemo”——吗?进入项目目录下的 android 文件下,建立 “src\an\qt\xgPushDemo” 这样的目录层次,新建一个 QtPushDemoActivity.java文件。然后目录看上去是酱紫的:

图7 添加java文件

如图7所示,我们添加了一个QtPushDemoActivity.java文件。Java 源文件名和类名是必须一致的,所以,我们这里的 Activity 名字就是 QtPushDemoActivity ,而 src 文件夹内的目录结构,和包名又是一致的,“an/qt/xgPushDemo”对应 Java 代码里的包名为“an.qt.xgPushDemo”,就是我们之前修改 AndroidManifest.xml 时定的那个包名。

好啦,来看 QtPushDemoActivity.java 的内容:

package an.qt.xgPushDemo;

import org.qtproject.qt5.android.bindings.QtActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import com.tencent.android.tpush.XGIOperateCallback;
import com.tencent.android.tpush.XGPushConfig;
import com.tencent.android.tpush.XGPushManager;

public class QtPushDemoActivity extends QtActivity {
    private final static String TAG = "xgPushDemo";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Context ctx = getApplicationContext();
        XGPushManager.registerPush(ctx, new XGIOperateCallback() {
            @Override
            public void onSuccess(Object o, int i) {
                Log.e(TAG, "register ok, token - " + o);
            }

            @Override
            public void onFail(Object o, int i, String s) {
                Log.e(TAG, "register failed, code - " + i + " message - " + s);
            }
        });
    }
}

很简单,我们从 QtActivity 继承,重写了 onCreate 方法,加入注册信鸽服务的代码。

Qt on Android 应用可以直接集成 java 代码,只要把代码放到与包名对应的目录结构下即可,无需在 pro 文件内做任何改动。

这里需要提一下,作为 Qt on Android 应用入口的 Activity,必须从 QtActivity 继承,这是因为 QtActivity 这个类完成了从 Java 过渡到 Qt 的动作,不用它,我们的 Qt 世界就无法呈现出来。关于这一点,具体的分析,请看《Qt on Android核心编程》的第13章——“Qt on Android揭秘”。

好啦,现在一切就绪,我们可以跑跑看喽。

运行效果

如果你运行 xgPushDemo 示例,看到的界面如下:

图 8 xgPushDemo的丑样

图8说,我很丑,可是我很温柔,别听它的,它就是个摆设。我们要看的是推送哦。

呐,注意到我在 QtPushDemoActivity 的 onCreate 方法里的打印信息了吗?如果你运行示例,应该看到类似下面的输入:

图 9 注册信鸽服务成功

看到图9的信息,说明我们注册信鸽服务成功了!天才第一步,雀氏纸尿裤。哦,太激动了,现在用不着纸尿裤了。接下来就可以登录 xg.qq.com ,给应用推送通知了。

怎么登录?怎么推送?亲,信鸽的快速集成指南:点我去看啦

我们这里可以看到效果如下:

图10 推送效果

嘿嘿,看到通知消息前面有个图标了吧,那是我偷信鸽Demo的,应用列表里也有呢,你看:

图11 应用列表

咦,这家伙很懒,应用名字都木改!不过如果你想改,去看“Qt on Android 之设置应用名为中文”吧。

好咧,在 Qt on Android 应用中集成信鸽推送,就讲到这里了。有了上面介绍的知识,常规的推送通知已经木问题了,哪怕你应用退出了,也可以收到服务端推送的通知,用户点击通知栏里的消息,就可以启动你的应用哦。

回顾一下:

时间: 2024-10-12 11:57:13

QtAndroid详解(6):集成信鸽推送的相关文章

Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送

Android高效率编码-第三方SDK详解系列(三)--JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送 很久没有更新第三方SDK这个系列了,所以更新一下这几天工作中使用到的推送,写这个系列真的很要命,你要去把他们的API文档大致的翻阅一遍,而且各种功能都实现一遍,解决各种bug各种坑,不得不说,极光推送真坑,大家使用还是要慎重,我们看一下极光推送的官网 https://www.jpush.cn/common/ 推送比较使用,很多软件有需要,所以在这个点拿出来多讲讲,我们本节

android app 集成 信鸽推送

推送其实挺中意小米推送的,并经用户群占比还是比较大的,奈何拗不过php后端哥们的选型,就只好用信鸽推送了,期间接入过程中也是遇到不少问题,所以记录下来,以后如果还是用信鸽推送的话,估计看看以前的博客,也能少踩点坑. 因为最新版本是2.43,所以按照2.43的引入为准 1,导入jar包和so文件: 文件夹为信鸽推送必须的so文件: 2,针对so文件,gradle文件进行配置,生成第一张图里面的native_libs2的jar文件: 3,AndroidManifest.xml文件的配置,这个基本按照

【Android应用开发】 推送原理解析 极光推送使用详解 (零基础精通推送)

作者 : octopus_truth 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/45046283 推送技术产生场景 : -- 服务器端主动性 : 客户端与服务器交互都是客户端主动的, 服务器一般不能主动与客户端进行数据交互, 因为服务器端无法得知客户端的 IP 地址 及 状态; -- 数据实时性 : 如果服务器端有紧急数据要传递给客户端, 就必须主动向客户端发送数据; -- 基本原理 : 使客户端实时获取服务器端消息,

详解APNS苹果消息推送通知

苹果消息通知什么? 如下图如示 就是APP的服务端在用户未打开APP进程时,还能发通知给用户APP的服务技术 相关概念 Provider:提供推送的第三方服务系统 Device:苹果设备,例如iphone和ipad等 APNS:苹果推送消息服务,属于苹果的服务 APP:安装在苹果设备上的应用程序 DeviceToken:设备的标识,用于确定接收通知的设备及APP Payload:推送消息的传输形式 总体示意图 从上图可以看出Provider与APNS之间是要建立连接的,APNS和Device之间

iOS学习笔记5-推送(信鸽推送)

今天博主有一个集成信鸽推送的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步. 推送分为用户推送,本地推送,远程推送和地理位置推送,其中最常用的就是远程推送,远程推送可以直接编写代码实现功能,也可以使用第三方的SDK,常用的第三方SDK有信鸽推送,极光推送和个推.今天和大家分享一下集成信鸽推送的过程. 1.下载腾讯信鸽SDK 它下面有两个版本:基础版和Pro版 下载地址:http://xg.qq.com/xg/ctr_index/download 注:信鸽ProiOS SDK是信鸽iOS

苹果开发者中心 - 信鸽推送

一.苹果开发者账号分类 从价格分类: 1.$99 (1).个人账号 (2).公司账号:需要法人信息,营业执照,邓白氏编码 使用:用于上传App到AppStore 2.$299 企业账号:需要邓白氏编码 使用:用于公司内部测试,不用于盈利 3.免费 (1).个人申请账号:仅可以用于真机调试 (2).院校账号:仅可以用于真机调试,通过苹果认证的高校,可以使用 二.关于账号的使用 1.证书 (1).测试证书 每个账号最多能创建2个,生成证书需要使用创建CSR文件[1.通过钥匙串生成 2.文件包含:当前

thinkphp3.2集成极光推送

项目中用到了给客户端的推送功能,选用了极光推送,下面演示一下在thinkphp中集成极光推送 1.下载极光推送的php类,可以从笔者的git下载 地址:https://git.oschina.net/zhangchao123/jiguangtuisongphplei.git 2.thinkphp集成 解压后,直接把jpush文件夹放在Thinkphp/Libray/Vender目录 /*   * 极光推送   * $pushId:极光ID,字符串或者array()   * $content:推送

Android消息推送:手把手教你集成小米推送

前言 在Android开发中,消息推送功能的使用非常常见. 为了降低开发成本,使用第三方推送是现今较为流行的解决方案. 今天,我将手把手教大家如何在你的应用里集成小米推送 该文档基于小米推送官方Demo,并给出简易推送Demo 看该文档前,请先阅读我写的另外两篇文章: 史上最全解析Android消息推送解决方案 Android推送:第三方消息推送平台详细解析 目录 1. 官方Demo解析 首先,我们先对小米官方的推送Demo进行解析. 请先到官网下载官方Demo和SDK说明文档 1.1 Demo

无处不在,详解iOS集成第三方登录(SSO授权登录&lt;无需密码&gt;)

1.前言 不多说,第三登录无处不在!必备技能,今天以新浪微博为例. 这是上次写的iOS第三方社交分享:http://www.cnblogs.com/qingche/p/3727559.html 可以和今天的一起集成使用. 2.集成前的准备工作 2.1.去ShareSDK(现为Mob)注册帐号,下载SDK,然后添加自己的应用后得到AppKey 下载地址:http://sharesdk.cn/Download 2.2.申请第三方登录的Appkey 例如: 新浪微博.腾讯微博.QQ.微信.豆瓣应用.人