五一放了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将收到一条推送消息!
评论 (2)