zoukankan      html  css  js  c++  java
  • 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                        

  • 相关阅读:
    jchdl
    jchdl
    UVa 10256 (判断两个凸包相离) The Great Divide
    UVa 11168 (凸包+点到直线距离) Airport
    LA 2572 (求可见圆盘的数量) Kanazawa
    UVa 10652 (简单凸包) Board Wrapping
    UVa 12304 (6个二维几何问题合集) 2D Geometry 110 in 1!
    UVa 10674 (求两圆公切线) Tangents
    UVa 11796 Dog Distance
    LA 3263 (平面图的欧拉定理) That Nice Euler Circuit
  • 原文地址:https://www.cnblogs.com/shuaibai123/p/5576232.html
Copyright © 2011-2022 走看看