123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- <?php
- namespace App\Module;
- /**
- * Class Umeng
- * @package App\Module
- */
- class Umeng
- {
- /**
- * 推送通知
- * @param string $platform ios|android
- * @param string $token umeng token
- * @param string $title
- * @param string $desc
- * @param array $extra
- * @return array
- */
- public static function notification($platform, $token, $title, $desc, $extra = [])
- {
- if ($platform == 'ios') {
- $body = [
- 'appkey' => env('UMENG_PUSH_IOS_APPKEY'),
- 'timestamp' => Base::time(),
- 'type' => 'unicast',
- 'device_tokens' => $token,
- 'payload' => array_merge([
- 'aps' => [
- 'alert' => [
- 'title' => $title,
- 'subtitle' => '',
- 'body' => $desc,
- ]
- ],
- ], $extra),
- ];
- } else {
- $body = [
- 'appkey' => env('UMENG_PUSH_ANDROID_APPKEY'),
- 'timestamp' => Base::time(),
- 'type' => 'unicast',
- 'device_tokens' => $token,
- 'payload' => [
- 'display_type' => 'notification',
- 'body' => [
- 'ticker' => $title,
- 'title' => $title,
- 'text' => $desc,
- ],
- 'extra' => $extra,
- ],
- ];
- }
- //
- $res = self::curl($platform, 'https://msgapi.umeng.com/api/send', $body);
- if (Base::isError($res)) {
- return $res;
- } else {
- return Base::retSuccess('success');
- }
- }
- /**
- * 发送请求
- * @param $platform
- * @param $url
- * @param $body
- * @param string $method
- * @return array
- */
- private static function curl($platform, $url, $body, $method = 'POST')
- {
- if ($platform == 'ios') {
- $appkey = env('UMENG_PUSH_IOS_APPKEY');
- $secret = env('UMENG_PUSH_IOS_APPMASTERSECRET');
- } else {
- $appkey = env('UMENG_PUSH_ANDROID_APPKEY');
- $secret = env('UMENG_PUSH_ANDROID_APPMASTERSECRET');
- }
- if (empty($appkey)) {
- return Base::retError('no appkey');
- }
- if (empty($secret)) {
- return Base::retError('no secret');
- }
- //
- $postBody = json_encode($body);
- $mysign = md5($method . $url . $postBody . $secret);
- $url.= "?sign=" . $mysign;
- //
- $res = Ihttp::ihttp_request($url, $postBody);
- if (Base::isError($res)) {
- return $res;
- }
- $array = json_decode($res['data'], true);
- $debug = env('UMENG_PUSH_DEBUG');
- if ($debug === true || $debug === 'info' || ($debug === 'error' && $array['ret'] !== 'SUCCESS')) {
- $logFile = storage_path('logs/umeng-push-' . date('Y-m') . '.log');
- file_put_contents($logFile, "[" . date("Y-m-d H:i:s") . "]\n" . Base::array2string_discard([
- 'platform' => $platform,
- 'url' => $url,
- 'method' => $method,
- 'body' => $body,
- 'request' => $res['data'],
- ]) . "\n", FILE_APPEND);
- }
- if ($array['ret'] == 'SUCCESS') {
- return Base::retSuccess('success', $array['data']);
- } else {
- return Base::retError('error', $array['data']);
- }
- }
- }
|