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

上篇文章 thinkphp集成系列之phpmailer批量发送邮件讲过的;php

邮件有着零成本、内容丰富的优势;python

可是一个很是硬的硬伤;这家伙的及时性太差了;android

尤为是随着90、00后的崛起;从上网开始体验的就是QQ、微信的即时通信;ios

惟一有的邮箱也仍是自动开通的QQ邮箱;然而仍是一连串的未读;git

那么有木有一种零成本、可是及时性比较好的方案呢?thinkphp

有的;那就是消息推送;固然;前提是用户已经安装了app;服务器

今个先就友盟的推送来说解下;http://push.umeng.com/微信

依然是以开源项目示例:http://git.oschina.net/shuaibai123/thinkphp-bjyadminapp

一:注册应用函数

工欲善其事必先注其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                        

相关文章
相关标签/搜索