极光推送 附加字段 php,在 Laravel 中使用 极光推送

环境

PHP 7.1.29

Laravel 5.6

安装 Jpush

在 composer.json 文件中的 require 下添加 "jpush/jpush": "^3.6"

"require": {

"jpush/jpush": "^3.6",

},

执行命令:composer install

配置

在 config 目录下新建文件 Jpush.php 并进行如下配置:

return [

'android_app_key' => env('JPUSH_APP_KEY'),

'android_master_secret' => env('JPUSH_APP_MASTER_SECRET'),

'ios_app_key' => env('JPUSH_IOS_KEY'),

'ios_master_secret' => env('JPUSH_IOS_MASTER_SECRET'),

// 环境 true-生产环境 false-开发环境

'environment' => env('JPUSH_APNS_PRODUCTION', true),

];

.env 文件进行如下配置:

JPUSH_APP_KEY=极光推送的app_key(android)

JPUSH_APP_MASTER_SECRET=极光推送的master_secret(android)

JPUSH_IOS_KEY=极光推送的app_key(ios)

JPUSH_IOS_MASTER_SECRET=极光推送的master_secret(ios)

JPUSH_APNS_PRODUCTION=true

使用

在 Modules 目录下新建目录 Jpush,然后在 Jpush 目录下新建文件 JpushService.php 内容如下:

namespace App\Modules\Jpush;

use App\BaseService;

use App\Exceptions\BaseResponseException;

use JPush\Client;

use Log;

class JpushService extends BaseService

{

/**

* 初始化 JPushClient

* @param $app

* @return Client

*/

public static function newJpushClient($app)

{

if ($app == 'android') {

$appKey = config('Jpush.android_app_key');

$master = config('Jpush.android_master_secret');

} elseif ($app == 'ios') {

$appKey = config('Jpush.ios_app_key');

$master = config('Jpush.ios_master_secret');

} else {

throw new BaseResponseException('APP类型错误');

}

$client = new Client($appKey, $master);

return $client;

}

/**

* android 或 ios 通过 别名 给单个设备或多个设备推送消息

* @param $params

* @return array

*/

public static function androidOrIosPushByAlias($params)

{

// 推送平台

$platform = array_get($params, 'platform');

// 推送标题

$title = array_get($params, 'title');

// 推送内容

$content = array_get($params, 'content');

// 通知栏样式 ID

$builderId = array_get($params, 'builderId');

// 附加字段 (可用于给前端返回,进行其他业务操作,例如:返回orderId,用于点击通知后跳转到订单详情页面)

$extras = array_get($params, 'extras');

// 推送目标 (别名)

$alias = array_get($params, 'alias');

// 推送目标 (注册ID)

$registrationId = array_get($params, 'registrationId');

// 推送类型 (1-别名 2-注册id 3-全部(ios 或 android))

$type = array_get($params, 'type');

// 返回一个推送 Payload 构建器

$push = self::newJpushClient($platform)->push();

$push->setPlatform($platform);

switch ($type) {

// 通过别名推送

case 1:

$push->addAlias($alias);

break;

// 通过注册 ID 推送

case 2:

$push->addRegistrationId($registrationId);

break;

// 推送全部(android 或 ios)

case 3:

$push->addAllAudience();

break;

}

$push->androidNotification($content, [ // android 通知

"title" => $title,

"builder_id" => $builderId,

"extras" => $extras,

])->iosNotification($content, [ // ios 通知

"sound" => "sound", // 通知提示声音,如果无此字段,则此消息无声音提示;

"badge" => "+1", // 应用角标(APP右上角的数字)0 清除 默认 +1

"extras" => $extras

])->options([ // 推送参数

'apns_production' => config('Jpush.environment') // APNs 是否生产环境 (ios)

]);

$response = $push->send();

if ($response['http_code'] != 200) {

Log::info('推送失败 by alias',

compact('response', 'type', 'platform', 'alias', 'registrationId', 'title', 'content')

);

}

return $response;

}

}

新建路由:

// 手动推送测试(极光推送)

Route::post('message/jpush', 'MessageController@testJpush');

新建控制器并添加方法如下:

/**

* 手动测试推送(极光推送)

*/

public function testJpush()

{

// 推送平台 ios android

$params['platform'] = 'android';

// 推送标题

$params['title'] = '恭喜您中奖了!';

// 推送内容

$params['content'] = '恭喜您中奖了!500万元大奖哦!';

// 通知栏样式 ID

$params['builderId'] = 1;

// 附加字段(这里自定义 Key / value 信息,以供业务使用)

$params['extras'] = [

'orderid' => 13545,

];

// 推送类型 1-别名 2-注册id 3-全部

$params['type'] = 1;

// 注册ID 可以是单个 也可以是 数组

// $params['registrationId'] = '170976fsdas554ewerr98f28';

// or

// $params['registrationId'] = [

// '170976fsdas554ewerr98f28',

// '120c8545we15we46b8929e'

// ];

// 别名 可以是单个 也可以是 数组

// $params['alias'] = '51651545154';

// or

// $params['alias'] = [

// '51651545154',

// '61654564897',

// ];

// 开始推送

$data = JpushService::androidOrIosPushByAlias($params);

dd($data);

}

最后,请求该测试方法,得到返回结果如下:

af14f1fa94003386a8811cfc4568fd92.png

c4cfd62bd53b6888fa6df84a6df47fbd.png

5a3f3c3e9d2c455e20ff1a28858c21fa.png

本文只用到了最常用的通知栏推送,如需其他方式请参考 官方文档。

以上方法在 android demo 以及 ios 真机测试过,可用,Good Luck,Thanks♪(・ω・)ノ。

本作品采用《CC 协议》,转载必须注明作者和本文链接

学不死就一直学

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值