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

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

swap空间的增减方法

(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap

Java获得今日零时零分零秒的时间(Date型)

publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS