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                        

  • 相关阅读:
    BFS visit tree
    Kth Largest Element in an Array 解答
    Merge k Sorted Lists 解答
    Median of Two Sorted Arrays 解答
    Maximal Square 解答
    Best Time to Buy and Sell Stock III 解答
    Best Time to Buy and Sell Stock II 解答
    Best Time to Buy and Sell Stock 解答
    Triangle 解答
    Unique Binary Search Trees II 解答
  • 原文地址:https://www.cnblogs.com/shuaibai123/p/5576232.html
Copyright © 2011-2022 走看看