dever 6 years ago
parent
commit
6051c4af96
2 changed files with 58 additions and 13 deletions
  1. 55 13
      lib/Data.php
  2. 3 0
      sdk/sg.php

+ 55 - 13
lib/Data.php

@@ -113,7 +113,7 @@ class Data
      * 
      * 
      * @return mixed
      * @return mixed
      */
      */
-	public function push($uid, $to_uid, $name, $content, $type = 11, $project = 1, $scope = false, $id = -1)
+	public function push($uid, $to_uid, $name, $content, $type = 11, $project = 1, $scope = false, $push = false, $id = -1)
 	{
 	{
         if (!is_numeric($type)) {
         if (!is_numeric($type)) {
             Dever::alert('错误的消息类型');
             Dever::alert('错误的消息类型');
@@ -156,7 +156,12 @@ class Data
 
 
             if ($id > 0) {
             if ($id > 0) {
             	if ($to_uid) {
             	if ($to_uid) {
-                    $to_uid = explode(',', $to_uid);
+                    if (strstr($to_uid, ',')) {
+                        $to_uid = explode(',', $to_uid);
+                    } else {
+                        $to_uid = explode("\n", $to_uid);
+                    }
+                    
                     foreach ($to_uid as $k => $v) {
                     foreach ($to_uid as $k => $v) {
                     	$insert['add_uid'] = $v;
                     	$insert['add_uid'] = $v;
                         $insert['add_oid'] = $id;
                         $insert['add_oid'] = $id;
@@ -176,33 +181,70 @@ class Data
                 if (isset($config['push']) && $config['push'] > 0) {
                 if (isset($config['push']) && $config['push'] > 0) {
                     if ($scope == 2) {
                     if ($scope == 2) {
                         # 发送全部
                         # 发送全部
-                        $to_uid = -1;
+                        $to_uid = array();
                     }
                     }
-                    $this->push($config['push'], $to_uid, $name, $content);
+                    $this->push($config['push'], $to_uid, $name, $content, $push);
                 }
                 }
             }
             }
         }
         }
 	}
 	}
 
 
-    private function push($id, $uid, $name, $content)
+    private function push($id, $uid, $name, $content, $push)
     {
     {
         $config = Dever::db('message/push')->one($id);
         $config = Dever::db('message/push')->one($id);
         if ($config) {
         if ($config) {
             # 现在就是腾讯信鸽
             # 现在就是腾讯信鸽
             if ($config['type'] == 1) {
             if ($config['type'] == 1) {
+                Dever::apply('sdk/sg', 'message');
                 $push = new \XingeApp($config['appid'], $config['appsecret']);
                 $push = new \XingeApp($config['appid'], $config['appsecret']);
                 $mess = new \Message();
                 $mess = new \Message();
                 $mess->setExpireTime(86400);
                 $mess->setExpireTime(86400);
                 $mess->setTitle($name);
                 $mess->setTitle($name);
                 $mess->setContent($content);
                 $mess->setContent($content);
-                $mess->setType(\Message::TYPE_MESSAGE);
-                $uid = explode(',', $uid);
-                $accountList = array_walk(
-                    $uid, 
-                    function(&$value, $key, $prefix){$value = $prefix.$value;}, 
-                    'dever_'
-                );
-                $ret = $push->PushAccountList(0, $accountList, $mess);
+                //$mess->setType(\Message::TYPE_MESSAGE);
+                $mess->setType(\Message::TYPE_NOTIFICATION);
+                $action = new \ClickAction();
+                $action->setActionType(\ClickAction::TYPE_ACTIVITY);
+                $action->setActivity($push);
+                $mess->setAction($action);
+
+                $total = count($uid);
+                $prefix = 'dever_';
+                $num = 10;
+                if ($total <= 0) {
+                    # 发全部
+                    $ret = $push->PushAllDevices(0, $mess);
+                } elseif ($total == 1) {
+                    # 发单条
+                    $ret = $push->PushSingleAccount(0, $prefix . $uid, $mess);
+                } elseif ($total <= $num) {
+                    # 发列表
+                    $accountList = array_walk(
+                        $uid, 
+                        function(&$value, $key, $prefix){$value = $prefix.$value;}, 
+                        $prefix
+                    );
+                    $ret = $push->PushAccountList(0, $accountList, $mess);
+                } else {
+                    # 大批量发送
+                    $ret = $push->CreateMultipush($mess, \XingeApp::IOSENV_DEV);
+                    if (!($ret['ret_code'] === 0)) {
+                        
+                    } else {
+                        $page = intval($total/$num)+1;
+                        for ($i = 0; $i <= $page; $i++) {
+                            $array = array();
+                            for($j = 0; $j <= $i+$num; $j++) {
+                                $k = $i + $j;
+                                if (isset($uid[$k])) {
+                                    $array[$k] = $prefix . $uid[$k];
+                                }
+                            }
+                            array_push($ret, $push->PushAccountListMultiple($ret['result']['push_id'], $array));
+                        }
+                    }
+                }
+                
                 return ($ret);
                 return ($ret);
             }
             }
         }
         }

+ 3 - 0
sdk/sg.php

@@ -0,0 +1,3 @@
+<?php
+
+Dever::apply('sdk/sg/XingeApp', 'message');