五一放了8天假,本来打算更新下主题的,结果迷上了美剧,偏偏这美剧还TM特别长,看完一季又一季,搞得我现在都没看完,最终导致主题更新了一点小功能,下次再发布吧。上班第一天写了一天代码,分享下今天上班用到的东西。极光推送PHP服务器端发送安卓APP客户端接收,简单来说就是一个消息推送,大佬别说要自己部署推送服务的话,不觉得浪费成本吗?所以还是使用第三方推送服务吧。
为什么选择极光推送?
我很懒,谁简单谁方便谁的文档容易看懂我就用谁的。综合比较后,只有极光推送符合我的要求,腾讯百度这种大公司的文档实在是伤透脑筋,果断放弃。
安卓客户端集成极光推送SDK
现在的Android studio比eclipse强大太多了,只需要添加云端仓库中的依赖,编译器就会自动集成SDK到你的项目中,所以第一步,在 module 的 gradle 中添加依赖。
implementation 'cn.jiguang.sdk:jpush:3.2.0'implementation 'cn.jiguang.sdk:jcore:1.2.7'
仅仅如此还不够,还需要AndroidManifest 的替换变量。
defaultConfig {
applicationId "com.zdhcsc.daimadog.hl" //JPush上注册的包名.
ndk {
//选择要添加的对应cpu类型的.so库。
abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'
// 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
}
manifestPlaceholders = [
JPUSH_PKGNAME: applicationId, //JPush上注册的包名.
JPUSH_APPKEY : "appkey", //JPush上注册的包名对应的appkey.
JPUSH_CHANNEL: "channel", //暂时填写默认值即可.
]
}
然后添加广播和权限,用来接收消息通知。
<receiver
android:name=".JPushReceiver"
android:enabled="true">
<intent-filter>
<!-- Required 用户注册SDK的intent -->
<action android:name="cn.jpush.android.intent.REGISTRATION" />
<!-- Required 用户接收SDK消息的intent -->
<action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
<!-- Required 用户接收SDK通知栏信息的intent -->
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
<!-- Required 用户打开自定义通知栏的intent -->
<action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />
<!-- 接收网络变化 连接/断开 since 1.6.3 -->
<action android:name="cn.jpush.android.intent.CONNECTION" />
<category android:name="com.zdhcsc.daimadog.hl" />
</intent-filter>
</receiver>
在你的activity.java中使用如下代码初始化极光推送并注册用户标签。
JPushInterface.init(Flash.this);
JPushInterface.setTags(this, 0, setUserTags());
private static Set<String> setUserTags() {
//添加标签用户(获取登录userid较为常见)
Set<String> tags = new HashSet<>();
tags.add("userid");
tags.add("all");
return tags;
}
到此安卓APP客户端的极光推送集成完毕,去极光推送后台推送一天消息到你注册的标签用户吧!
PHP发送推送消息
安卓客户端只能接受消息,并不能主动发起消息推送。为了解决这个主动推送的问题,极光推送官方给了使用PHP来发起主动推送的方案,我试了下效果不错。
首先需要下载极光推送PHPSDK到你的服务器中,然后使用下面的代码即可推送消息。
<?php
require 'jpush/autoload.php';
use JPush/Client as JPush;
$app_key="key";//后台获取
$master_secret="secret";//后台获取
$client = new JPush($app_key, $master_secret);
$pusher = $client->push();
$pusher->setPlatform('all');
//$pusher->addAllAudience();
$pusher->addTag('userid');
$pusher->setNotificationAlert('Hello, 推送测试');
try {
$pusher->send();
} catch (/JPush/Exceptions/JPushException $e) {
// try something else here
print $e;
}
?>
注意引用路径,根据自己需求修改。并且需要注意文件编码问题,建议使用UTF-8无B模式!通过浏览器访问一下,你的APP将收到一条推送消息!
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/242277.html
