推送是我们开发移动应用经经常使用到的功能,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";@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Context ctx = getApplicationContext();XGPushManager.registerPush(ctx, new XGIOperateCallback() {@Overridepublic void onSuccess(Object o, int i) {Log.e(TAG, "register ok, token - " + o);}@Overridepublic void onFail(Object o, int i, String s) {Log.e(TAG, "register failed, code - " + i + " message - " + s);}});}
}

非常easy,我们从 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 应用中集成信鸽推送。就说到这里了。

有了上面介绍的知识,常规的推送通知已经木问题了,哪怕你应用退出了。也能够收到服务端推送的通知,用户点击通知栏里的消息。就能够启动你的应用哦。

回想一下:

  • QtAndroid具体解释(5):JNI调用Android系统功能(2)
  • QtAndroid具体解释(4):JNI调用Android系统功能(1)
  • QtAndroid具体解释(3):startActivity实战Android拍照功能
  • QtAndroid具体解释(2):startActivity和它的小伙伴们
  • QtAndroid具体解释(1):QAndroidJniObject
  • Qt on Android专栏

QtAndroid具体解释(6):集成信鸽推送相关推荐

  1. java服务端集成信鸽推送

    java服务端集成信鸽推送 最近项目需要集成推送功能,突发奇想的选了信鸽推送(可能是最近一直在用阿里的东西),没想到这坑不是一般的多,而且关于详细的集成案例,度娘上真是没一个能入眼的.算了,别的不多说 ...

  2. android app 集成 信鸽推送

    推送其实挺中意小米推送的,并经用户群占比还是比较大的,奈何拗不过php后端哥们的选型,就只好用信鸽推送了,期间接入过程中也是遇到不少问题,所以记录下来,以后如果还是用信鸽推送的话,估计看看以前的博客, ...

  3. java后台与android端集成信鸽推送和华为推送通道

    时间比较紧,并未调试. 需求:后端可以针对指定账号或者列表进行通知栏信息推送,优先使用华为通道.点击通知栏消息打开指定activity 后端版本V3,android sdk 3.2.7 一.后端部分代 ...

  4. android 信鸽 自动重启,Android简单集成信鸽推送

    添加项目的buid.gradle ndk { //选择要添加的对应cpu类型的.so库 abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' // 还可以添 ...

  5. 信鸽推送-10005错误

    关于集成信鸽推送-10005的错误见文章 "信鸽推送注册失败的一般情况" https://segmentfault.com/a/11...

  6. 利用信鸽推送实现Android登录后强制退出的功能(单点登录)

    首先整理思路,先思考实现逻辑: 1.集成信鸽推送 2.实现自定义推送 3.在自定义推送中,接收推送的方法内启动强制退出功能. 思路逻辑很简单,但是实现起来就得一步一步做,先集成信鸽: 这里主要是参考官 ...

  7. 信鸽推送集成采坑之代码混淆报错/XINGE: [Util] please add wup-1.0.0.E-SNAPSHOT.jar in your libs

    转载请注明:https://blog.csdn.net/u012854870/article/details/80546448 信鸽推送接入刚开始按照官方推荐加入一下混淆代码: ########### ...

  8. 腾讯信鸽推送平台集成中的问题

    2016/03/11// ///by xbw/ //eclipse 信鸽sdk v2.42// 好久没来写csdn博客了,因为开了个小站,在此宣传一下吧,xbwcc.com.cn 在最近做的app中出 ...

  9. Android集成腾讯信鸽推送SDK

    推送是每个应用中常见的功能今天使用一下腾讯的信鸽推送听说信鸽推送保活率比较高~ 第一步先去官网注册账号https://xg.qq.com/推荐使用QQ直接登陆,进去之后点击"新建应用&quo ...

  10. 集成极光推送遇到的问题

    文章目录 解决1: 2.您只需要将minsdkversion更改为21而不是16 这个问题有两种不同的答案,但我认为最合适的是第二种解决方案. 这是Google的官方解释: 原文: 翻译:对Andro ...

最新文章

  1. 号称3个月发布最强量子计算机,卖口罩的霍尼韦尔凭什么?
  2. python(matplotlib6)——打印图像(imshow)3D数据(contourf等高线)
  3. 基于Huffman算法和LZ77算法的文件压缩的改进方向
  4. 《Spring2.0 技术手册》读书笔记五-与Spring容器的交互(2)
  5. 两个原子操作组合到一块不一定是能保证原子性
  6. 【项目管理】CMM能力成熟度模型
  7. mongodb集群数据同步及故障演练
  8. Mac 配置PHP运行环境
  9. 模仿Google搜索功能
  10. UITextfiled 的属性注释简介
  11. mysql ubb html,python实现html转ubb代码(html2ubb)
  12. ex10_10MyInteger类
  13. 时装连连看,基于MindSpore实现FashionMNIST图像分类
  14. linux开发板添加qt库文件_关于QT程序下载到开发板的一些步骤总结
  15. 来看看你的云栖社区2017年度总结
  16. 网易免费/付费163企业邮smtp服务器地址
  17. Python第三课小节
  18. 【MySQL练习】数据查询(02)-简易版
  19. Transformer结构的初步探索
  20. 总结]关于守护进程解释文章

热门文章

  1. MATLAB读取EXCEL表格文件,并进行可视化
  2. [导入]冰刃Icesword 1.22测试版发布
  3. usc week 5 计算几何(包含凸包) 队内练习题
  4. 血手耳机与笔记本驱动冲突
  5. bag java_Bag.java · linbo/Bag_Queue_Stack_Java - Gitee.com
  6. ffmpeg批量将图片合并为视频
  7. id门禁卡复制到手机_怎么把手机变成门禁卡 手机NFC复制门禁卡图文教程
  8. 旧电脑很卡怎么重新安装电脑系统?
  9. 加装固态硬盘后计算机不显示,安装固态硬盘后无法读取,如何解决?
  10. 质控三张图 gaochao ards 多个表型写成循环