#yyds干货盘点#手机APP消息推送极光推送jpush-php实例

一年好景君须记,最是橙黄橘绿时。这篇文章主要讲述#yyds干货盘点#手机APP消息推送极光推送jpush-php实例相关的知识,希望能为你提供帮助。
> 本文环境 Thinkphp5.0,PHP7.1,mysql5.7\\
> 不懂的可以评论或联系我邮箱:owen@owenzhang.com\\
> 著作权归OwenZhang所有。商业转载请联系OwenZhang获得授权,非商业转载请注明出处。
jpush/jpush介绍这是 JPush REST API 的 PHP 版本封装开发包,是由极光推送官方提供的,一般支持最新的 API 功能。
对应的 REST API 文档:  ??https://docs.jiguang.cn/jpush/server/push/server_overview/??

支持的 PHP 版本: 5.3.3 ~ 5.6.x, 7.x
若需要兼容 PHP 5.3.3 以下版本,可以使用  ??v3 分支的代码???。 因为运行 Composer 需要 PHP 5.3.2+ 以上版本,所以其不提供 Composer 支持, 也可以??点击链接??下载 v3.4.x 版本源码。
jpush/jpush下载使用 Composer 安装
执行 $ php composer.phar install 或 $ composer install 进行安装。

直接下载源码安装
直接下载源代码也是一种安装 SDK 的方法,不过因为有版本更新的维护问题,所以这种安装方式十分不推荐,但由于种种原因导致无法使用 Composer,所以我们也提供了这种情况下的备选方案。
  • 下载源代码包,解压到项目中
  • 在项目中引入 autoload:
require path_to_sdk/autoload.php;

代码实例推送接口父类
application/common/JPush.php
< ?php
/**
* 极光推送
*/
namespace app\\common;

use JPush\\Client;

class JPush

private $key = ;
private $secret = ;

use InstanceTrait;

public function _init()

$this-> key = 3412f;
$this-> secret = 2c23;


/**
* 指定注册ID发送
*/
public function push($registrationId, $title, $text, $url, $itemId)

$registrationId = array_filter($registrationId);
\\Log::info(var_export([$registrationId, $title, $text, $url, $itemId], true));
$this-> _init();

$client = new Client($this-> key, $this-> secret);
$push = $client-> push();

$push-> setPlatform(all);
$push-> addRegistrationId($registrationId);
$push-> addandroidNotification($title, $text);
$push-> androidNotification($text, [title => $title, alert_type => 2, extras => [url => $url, id => $itemId]]);
$push-> iosNotification([title => $title, body => $text], [extras => [url => $url, id => $itemId]]);
$push-> options([apns_production => false]);
$push-> send();


推送服务类
application/lucky/push/service/PushService.php
< ?php
/**
* 推送服务
*/

namespace app\\lucky\\push\\service;

use app\\common\\JPush;
use app\\lucky\\follow\\service\\FollowService;
use app\\lucky\\push\\model\\UserPushConfigModel;
use app\\lucky\\subscribe\\service\\SubscribeService;
use app\\sports\\match\\service\\FollowMatchService;
use app\\sports\\match\\service\\SportsApiService;

class PushService

public function push()

try
$push = JPush::getInstance()-> push([1517badf006e81e], 我是标题, 我是内容, GameDetails:1909991);
var_dump($push);
catch (\\Exception $e)
var_dump($e-> getMessage());




/**
* 推送设置
*/
public function pushConfig($userId, $sys, $ext)

$userPushConfigModel = new UserPushConfigModel();
$result = $userPushConfigModel-> updateConfig($userId, $sys, [ext => json_encode($ext), update_time => time()]);

if ($result)
return [code => 0, msg => 添加成功];


return [code => -1, msg => 添加失败];


/**
* 获取配置
*/
public function getPushConfig($userId, $sys)

$userPushConfigModel = new UserPushConfigModel();
$result = $userPushConfigModel-> getConfigByUserId($userId, $sys);
$data = https://www.songbingjia.com/android/isset($result[ext]) ? $result[ext] : ;
$data = https://www.songbingjia.com/android/(array)json_decode($data, true);

return [code => 0, msg => 获取成功, data =https://www.songbingjia.com/android/> $data];



/**
* 发布资讯推送
*/
public function blogPush($authorId, $title, $text, $blogId)

//获取作者的粉丝列表ID
$followService = new FollowService();
$followListId = $followService-> getAuthorFollowList($authorId, sports);

//获取用户ID的配置
$pushModel = new UserPushConfigModel();
$pushConfig = $pushModel-> getConfigByUserIdArr($followListId, sports);

$identifyArr = [];
foreach ($pushConfig as $value)
$ext = (array)json_decode($value[ext], true);
if (in_array(information, $ext))
$identifyArr[] = $value[identify];



if (!empty($identifyArr))
try
JPush::getInstance()-> push($identifyArr, $title, $text, InfoDetails, $blogId);
catch (\\Exception $exception)
\\Log::error($exception-> getMessage());






/**
* 登录关联极光ID
*/
public function loginLinkPush($userId, $identify, $sys = 343)

$userPushConfigModel = new UserPushConfigModel();
$config = $userPushConfigModel-> getConfigByUserId($userId, sports);

if (empty($config))
$data = https://www.songbingjia.com/android/[
user_id => $userId,
identify => $identify,
update_time => time(),
sys => $sys,
ext => json_encode([start => true, end => true, score => true, news => true, information => true])
];

$result = $userPushConfigModel-> addConfig($data);
if (empty($result))
return [code => -1, msg => 添加极光推送失败];


return [code => 0, msg => 添加极光推送成功];


$data = https://www.songbingjia.com/android/[
identify => $identify,
update_time => time(),
];
$result = $userPushConfigModel-> updateConfig($userId, $sys, $data);
if (empty($result))
return [code => -1, msg => 更新极光推送失败];


return [code => 0, msg => 更新极光推送成功];


/**
* 退出登录关联极光ID
*/
public function logoutLinkPush($userId, $sys = 343)

$userPushConfigModel = new UserPushConfigModel();
$data = https://www.songbingjia.com/android/[
identify => ,
update_time => time(),
];
$result = $userPushConfigModel-> updateConfig($userId, $sys, $data);
if (empty($result))
return [code => -1, msg => 退出登录,更新极光推送失败];


return [code => 0, msg => 退出登录,更新极光推送成功];


推送实例
application/lucky/admin/controller/Blog.php
//调用推送APP PUSH
$data[author_id]=123;
$data[title]=文章标题今天三美好的一天;
$title = 张三发布资讯;
$pushService = new PushService();
$pushService-> blogPush($data[author_id], $title, mb_substr($data[title], 0, 10) . ..., $result);

初始化
use JPush\\Client as JPush;
...
...

$client = new JPush($app_key, $master_secret);

...

OR
$client = new \\JPush\\Client($app_key, $master_secret);

简单推送
$client-> push()
-> setPlatform(all)
-> addAllAudience()
-> setNotificationAlert(Hello, JPush)
-> send();

异常处理
$pusher = $client-> push();
$pusher-> setPlatform(all);
$pusher-> addAllAudience();
$pusher-> setNotificationAlert(Hello, JPush);
try
$pusher-> send();
catch (\\JPush\\Exceptions\\JPushException $e)
// try something else here
print $e;

推送生产例子
注意: 这只是使用样例, 不应该直接用于实际环境中!!
在下载的中的  ??examples??  文件夹有简单示例代码, 开发者可以参考其中的样例快速了解该库的使用方法。
简单使用方法
先填写对应的appKey和masterSecret,可以额外设定Registration_id。
若要运行 push_example.php 中的示例代码:
# 假定当前目录为 JPush 源码所在的根目录
$ php examples/push_example.php

同时也可编辑相关的示例文件,更改参数查看执行效果
测试
# 编辑 tests/bootstrap.php 文件,填入必须的变量值
# OR 设置相应的环境变量

# 运行全部测试用例
$ composer tests

# 运行某一具体测试用例
$ composer tests/JPush/xxTest.php

Buy me a cup of coffee :)觉得对你有帮助,就给我打赏吧,谢谢!
微信赞赏码链接,点击跳转:
【#yyds干货盘点#手机APP消息推送极光推送jpush-php实例】??  https://www.owenzhang.com/wechat_reward.png???

    推荐阅读