-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathjpush.php
138 lines (122 loc) · 3.74 KB
/
jpush.php
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
<?php
/**
* 极光推送
* @author [email protected]
* @version 20121109
*/
class jpush {
private $_username;
private $_appkeys;
private $_masterSecret;
/**
* 构造函数
* @param string $username
* @param string $password
* @param string $appkeys
*/
function __construct($username = '', $appkeys = '', $_masterSecret = '') {
$this->_username = $username;
$this->_appkeys = $appkeys;
$this->_masterSecret = $_masterSecret;
}
/**
* 模拟post进行url请求
* @param string $url
* @param string $param
*/
function request_post($url = '', $param = '') {
if (empty($url) || empty($param)) {
return false;
}
$postUrl = $url;
$curlPost = $param;
$ch = curl_init();//初始化curl
curl_setopt($ch, CURLOPT_URL,$postUrl);//抓取指定网页
curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec($ch);//运行curl
curl_close($ch);
return $data;
}
/**
* 发送
* @param int $sendno 发送编号。由开发者自己维护,标识一次发送请求
* @param int $receiver_type 接收者类型。1、指定的 IMEI。此时必须指定 appKeys。2、指定的 tag。3、指定的 alias。4、 对指定 appkey 的所有用户推送消息。
* @param string $receiver_value 发送范围值,与 receiver_type相对应。 1、IMEI只支持一个 2、tag 支持多个,使用 "," 间隔。 3、alias 支持多个,使用 "," 间隔。 4、不需要填
* @param int $msg_type 发送消息的类型:1、通知 2、自定义消息
* @param string $msg_content 发送消息的内容。 与 msg_type 相对应的值
* @param string $platform 目标用户终端手机的平台类型,如: android, ios 多个请使用逗号分隔
*/
function send($sendno = 0, $receiver_type = 1, $receiver_value = '', $msg_type = 1, $msg_content = '', $platform = 'android') {
//$url = 'http://api.jpush.cn:8800/sendmsg/v2/sendmsg';
$url = 'http://api.jpush.cn:8800/v2/push';
$param = '';
//$username = $this->_username;
//$param .= 'username='.$username;
$param .= '&sendno='.$sendno;
$appkeys = $this->_appkeys;
$param .= '&app_key='.$appkeys;
$param .= '&receiver_type='.$receiver_type;
$param .= '&receiver_value='.$receiver_value;
$masterSecret = $this->_masterSecret;
$verification_code = strtoupper(md5($sendno.$receiver_type.$receiver_value.$masterSecret));
$param .= '&verification_code='.$verification_code;
$param .= '&msg_type='.$msg_type;
$param .= '&msg_content='.$msg_content;
$param .= '&platform='.$platform;
$res = $this->request_post($url, $param);
if ($res === false) {
return false;
}
$res_arr = json_decode($res, true);
/*
switch (intval($res_arr['errcode'])) {
case 0:
echo '调用成功';
break;
case 10:
echo '系统内部错误';
break;
case 1001:
echo '只支持 HTTP Post 方法,不支持 Get 方法';
break;
case 1002:
echo '缺少了必须的参数';
break;
case 1003:
echo '参数值不合法';
break;
case 1004:
echo '验证失败';
break;
case 1005:
echo '用户名或者密码错误';
break;
case 1006:
echo '消息体太大';
break;
case 1007:
echo 'IMEI不合法';
break;
case 1008:
echo 'receiver_type = 1 时,必须填写 AppKey';
break;
case 1009:
echo 'AppKey不合法';
break;
case 1010:
echo 'msg_content 不合法';
break;
case 1011:
echo '没有满足条件的推送目标';
break;
default:
echo '调用成功';
break;
}
*/
return $res_arr;
}
}