Jpush.php
6.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
<?php
/**
+-----------------------------------------------------------------------------------------------------------------------
* 极光推送:区县处理逻辑处理
+-----------------------------------------------------------------------------------------------------------------------
*
* PHP version 7
*
* @category App\Jpush
* @package App\Jpush
* @author Richer <yangzi1028@163.com>
* @date 2020年3月10日,16:52:41
* @copyright 2020-2022 Richer (http://www.Richer.com/)
* @license http://www.Richer.com/ License
* @link http://www.Richer.com/
*/
namespace App\Jpush;
use JPush\Client as JPushClient;
/**
* Class Jpush
*
* @category App\Jpush
* @package App\Jpush
* @author Richer <yangzi1028@163.com>
* @date 2020年3月10日,16:52:41
* @copyright 2020-2022 Richer (http://www.Richer.com/)
* @license http://www.Richer.com/ License
* @link http://www.Richer.com/
*/
class Jpush
{
/**
* 根据tag来进行进行消息推送
*
* @param array $alias 推送目标用户alias:规则为客户端用户标签规则:ymy_cuid_12 管理端用户标签规则:ymy_auid_12
* @param string $content 消息内容
* @param string $platform 设备平台
*
* @return \Illuminate\Http\Response
*/
public function sendByAlias($alias, $content, $platform = 'all')
{
try {
// 初始化一个实例
$client = new JPushClient(config('jpush.app_key'), config('jpush.master_secret'), storage_path('/logs/Jpush/jpush.log'));
$response = $client->push()
/* ->setPlatform('all')
->addAllAudience()
->setNotificationAlert('hello tp3.2')
->send();*/
->setPlatform(array('ios', 'android'))
// 一般情况下,关于 audience 的设置只需要调用 addAlias、addTag、addTagAnd 或 addRegistrationId
// 这四个方法中的某一个即可,这里仅作为示例,当然全部调用也可以,多项 audience 调用表示其结果的交集
// 即是说一般情况下,下面三个方法和没有列出的 addTagAnd 一共四个,只适用一个便可满足大多数的场景需求
->addAlias($alias)
//->addTag($tags)
// ->addRegistrationId($registration_id)
->setNotificationAlert($content)
// ->iosNotification('Hello IOS', array(
// 'sound' => 'sound.caf',
// // 'badge' => '+1',
// // 'content-available' => true,
// // 'mutable-content' => true,
// 'category' => 'jiguang',
// 'extras' => array(
// 'key' => 'value',
// 'jiguang'
// ),
//))
// ->androidNotification('Hello Android', array(
// 'title' => 'hello jpush',
// // 'builder_id' => 2,
// 'extras' => array(
// 'key' => 'value',
// 'jiguang'
// ),
//))
// ->message('message content', array(
// 'title' => 'hello jpush',
// // 'content_type' => 'text',
// 'extras' => array(
// 'key' => 'value',
// 'jiguang'
// ),
//))
->options(
array(
// sendno: 表示推送序号,纯粹用来作为 API 调用标识,
// API 返回时被原样返回,以方便 API 调用方匹配请求与返回
// 这里设置为 100 仅作为示例
// 'sendno' => 100,
// time_to_live: 表示离线消息保留时长(秒),
// 推送当前用户不在线时,为该用户保留多长时间的离线消息,以便其上线时再次推送。
// 默认 86400 (1 天),最长 10 天。设置为 0 表示不保留离线消息,只有推送当前在线的用户可以收到
// 这里设置为 1 仅作为示例
// 'time_to_live' => 1,
// apns_production: 表示APNs是否生产环境,
// True 表示推送生产环境,False 表示要推送开发环境;如果不指定则默认为推送生产环境
'apns_production' => config('jpush.apns_production'),
// big_push_duration: 表示定速推送时长(分钟),又名缓慢推送,把原本尽可能快的推送速度,降低下来,
// 给定的 n 分钟内,均匀地向这次推送的目标用户推送。最大值为1400.未设置则不是定速推送
// 这里设置为 1 仅作为示例
// 'big_push_duration' => 1
)
)
->send();
//print_r($response);
return $response['http_code'];
} catch (\JPush\Exceptions\APIConnectionException $e) {
// // try something here
// dump(1);
// print $e;
} catch (\JPush\Exceptions\APIRequestException $e) {
// try something here
//dump($e -> code);
//dump($e);
//print $e;
}
// // 初始化一个实例
// $push = new JPushClient(config('jpush.app_key'), config('jpush.master_secret'));
// $response = $push ->push()
// ->setPlatform($platform)
// ->addTag($tags)
// ->setNotificationAlert($content)
// //->message('jpush', array('extras' => $content))
// ->options(array('time_to_live' => 10))
// ->send();
// return $response;
}
}