thinkphp整合系列之友盟消息推送

上篇文章 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                        


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章