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

上篇文章 thinkphp集成系列之phpmailer批量發送郵件講過的;php

郵件有着零成本、內容豐富的優勢;android

可是一個很是硬的硬傷;這傢伙的及時性太差了;ios

尤爲是隨着90、00後的崛起;從上網開始體驗的就是QQ、微信的即時通信;git

惟一有的郵箱也仍是自動開通的QQ郵箱;然而仍是一連串的未讀;thinkphp

那麼有木有一種零成本、可是及時性比較好的方案呢?服務器

有的;那就是消息推送;固然;前提是用戶已經安裝了app;微信

今個先就友盟的推送來說解下;http://push.umeng.com/app

依然是以開源項目示例: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                        

相關文章
相關標籤/搜索