上篇文章 thinkphp集成系列之phpmailer批量發送郵件講過的;
郵件有着零成本、內容豐富的優點;
但是一個非常硬的硬傷;這傢伙的及時性太差了;
尤其是隨着90、00後的崛起;從上網開始體驗的就是QQ、微信的即時通訊;
唯一有的郵箱也還是自動開通的QQ郵箱;然而還是一連串的未讀;
那麼有木有一種零成本、但是及時性比較好的方案呢?
有的;那就是消息推送;當然;前提是用戶已經安裝了app;
今個先就友盟的推送來講解下;http://push.umeng.com/
依然是以開源項目示例:http://git.oschina.net/shuaibai123/thinkphp-bjyadmin
一:註冊應用
工欲善其事必先注其key;
找到消息推送、添加應用;獲得key和secret;
這裏面有2個坑;
1:安卓要用的是Appkey和App Master Secret;不是Umeng Message Sercet;
2:一定要添加 服務器ip地址、如果是在本地測試;那直接百度下ip;把查出的ip填上即可;
添加測試設備的Device Token;這個是需要由移動端獲取的;
二:創建表
下載示例項目;安裝後會有users表和oauth_user表;
users表用來存放用戶的賬號密碼之類的;
oauth_user表用來存放移動端發送過來的Device Token;
當然;自己設計表也是可以的;主要就是讓用戶id和Device Token關聯起來;
三:集成友盟sdk
sdk目錄:/ThinkPHP/Library/Vendor/Umeng
當然;這個sdk也是被我修改過的;具體修改了那些地方;同樣也年代久遠;沒有記錄了;
配置項:/Application/Common/Conf/config.php
'UMENG_IOS_APP_KEY' => '', //友盟ios AppKey 'UMENG_IOS_SECRET' => '', //友盟ios App Master Secret 'UMENG_ANDROID_APP_KEY' => '', //友盟android AppKey 'UMENG_ANDROID_SECRET' => '', //友盟android App Master Secret
函數:/Application/Common/Common/function.php
/** * 發送友盟推送消息 * @param integer $uid 用戶id * @param string $title 推送的標題 * @param integer $type 1:官方小祕書 2:我的評論 * @return boolear 是否成功 */ function umeng_push($uid,$title){ // 獲取token $device_tokens=D('OauthUser')->getToken($uid,2); // 如果沒有token說明移動端沒有登錄;則不發送通知 if (empty($device_tokens)) { return false; } // 導入友盟 Vendor('Umeng.Umeng'); // 自定義字段 根據實際環境分配;如果不用可以忽略 $status=1; // 消息未讀總數統計 根據實際環境獲取未讀的消息總數 此數量會顯示在app圖標右上角 $count_number=1; $data=array( 'key'=>'status', 'value'=>"$status", 'count_number'=>$count_number ); // 判斷device_token 64位表示爲蘋果 否則爲安卓 if(strlen($device_tokens)==64){ $key=C('UMENG_IOS_APP_KEY'); $timestamp=C('UMENG_IOS_SECRET'); $umeng=new \Umeng($key, $timestamp); $umeng->sendIOSUnicast($data,$title,$device_tokens); }else{ $key=C('UMENG_ANDROID_APP_KEY'); $timestamp=C('UMENG_ANDROID_SECRET'); $umeng=new \Umeng($key, $timestamp); $umeng->sendAndroidUnicast($data,$title,$device_tokens); } return true; }
調用:
umeng_push('1','測試')
本文爲白俊遙原創文章,轉載無需和我聯繫,但請註明來自白俊遙博客http://baijunyao.com