BAE(百度云)安卓云推送服务

关于云推送服务,SAE很早就开始做移动云,并提供了IOS的云推送服务。这次百度也出了自己的云推送服务,而且支持对安卓系统的云推送,可谓是一大惊喜。

BAE 百度推送服务,主要提供下面的三个加上一个自定义的功能(需写代码实现):

bae-push-control

1.面向TAG客户端的推送

这种方式的推送,支持三种客户类型:一种是所有的安卓客户端用户(当然要是自己开发的了),这样消息就可以发送给自己的所有客户端;另一种是发送给拥有特定TAG的用户。还有一种是指定特定的用户USER_ID进行的推送(因为一个用户可能同时拥有多台安卓设备,所有在指定user_id的同时,可以同时指定channel_id这样就可以指给用户的特定设备发送通知,也可以不指定,这样通知就会发送到该用户的所有设备);

bae-push

下面来详细说明一下发送到特定TAG用户:

百度云设计的这个TAG服务是一个非常有趣的服务,我想这种设计一定是来自于之前设计的消息队列的订阅。我们可以这样来使用这个服务,在客户端应用程序中给予不同用户需求给予不同的通知:比如,我们可以来做这样一个应用,应用内提供股票和天气预报两项服务,传统的方法是我们在服务器端来记录不同用户的需求,这样就可以来针对不同的用户推送不同的通知;但是有了TAG之后,我们可以在客户端做设置,设置不同的TAG,当服务器端推送通知的时候可以选择给不同TAG的用户推送不同的通知,即,给订阅天气预报的用户推送天气通知,给订阅股票的用户推送股票信息通知;这样我们就可以很方便的使用TAG来进行推送操作,而不需要存储用户的特定需求了。

同时,在上面的控制台推送图中,我们看到了,百度云推送还提供了对该通知的处理操作,包括点击通知打开应用或网页,以及其它的高级设置。当然客户端也就对应着相应的接口,这些大家可以到SDK里的文档中查询,可以说百度云的文档还是比较健全的,而且有比较好的SDK,开发起来还是非常方便的。

2.推送任意消息

百度云推送除了可以推送通知,也可以推送任意消息,同样支持TAG用户的区分。其实在下面的自定义消息中,可以发现,在SDK中其实也是使用的相同的方法,只是传入的参数不同而已。只要在Option里面做出相应的设置即可,包括下面的推送富文本信息也是如此。只不过百度云给我们已经做好了一些可视化的用户界面,可以直接使用。但是像这样的应用,大多数也是需要专人维护的,将这个推送接口放到开发者中心其实在时间的生产环境中意义不是很大,倒是可以方便开发者调试。笔者认为真正的使用,还是需要开发者自定义接口,来提供给应用维护人员来使用的。

	/**
	 * pushMessage
	 * 用户关注: 是
	 * 根据pushType, messages, message_type, [optinal] 推送消息
	 * @access public
	 * @param int $pushType 推送类型 取值范围 1-4, 1:单人,2:一群人tag, 3:所有人, 4:设备
	 * @param string $messages 要发送的消息,如果是数组格式,则会自动做json_encode;如果是json格式给出,必须与$msgKeys对应起来;
     * @param array $optional 可选参数,如果$pushType为单人,必须指定Channel::USER_ID(例:$optional[Channel::USER_ID] = 'xxx'),
	 *		如果$pushType为tag,必须指定Channel::TAG,
	 * 		其他可选参数:Channel::MSG_KEYS 发送的消息key,如果是数组格式,则会自动做json_encode,必须与$messages对应起来;
	 *		Channel::MESSAGE_TYPE 消息类型,取值范围 0-1, 0:消息(透传),1:通知,默认为0
	 *		还可指定Channel::MESSAGE_EXPIRES, Channel::MESSAGE_EXPIRES, Channel::CHANNLE_ID等
	 *
	 * @return 成功:PHP数组;失败:false
	 * @version 2.0.0.0
	*/
	//public function pushMessage($pushType, $messages, $msgKeys, $optional = NULL)
function test_pushMessage ($user_id)
{
    global $apiKey;
	global $secretKey;
    $channel = new Channel ( $apiKey, $secretKey ) ;
	$push_type = 1; //推送单播消息
	$optional[Channel::USER_ID] = $user_id;
	$message = "hello wold";
	$message_key = "msg_key";
    $ret = $channel->pushMessage ( $push_type, $message, $message_key, $optional ) ;
    if ( false === $ret )
    {
        error_output ( 'WRONG, ' . __FUNCTION__ . ' ERROR!!!!!' ) ;
        error_output ( 'ERROR NUMBER: ' . $channel->errno ( ) ) ;
        error_output ( 'ERROR MESSAGE: ' . $channel->errmsg ( ) ) ;
        error_output ( 'REQUEST ID: ' . $channel->getRequestId ( ) );
    }
    else
    {
        right_output ( 'SUCC, ' . __FUNCTION__ . ' OK!!!!!' ) ;
        right_output ( 'result: ' . print_r ( $ret, true ) ) ;
    }
}

bae-push-msg

 

3.富文本推送

富文本推送提供了非常友好的用户界面,百度云提供了不同的模板,而且可以使用HTML代码自定义。当然客户端也需要开发者去花费一点心思。下面是富文本推送界面一个模板的截图。

bae-push-media

 

百度云推送目前只提供了安卓系统的jar包,但从百度云推送的文档一些解释和说明中,曾提到,如果是IOS和WinPhone开发者,(可以如何如何去做…..),我们相信百度云很快就会陆续提供IOS和windows Phone平台的相关SDK给开发者使用。另外补充说明的一点,百度云推送是多应用共享一个推送服务,也就是说,如果一部安卓设备上面装有了多个使用百度云推送开发的应用,后台的推送服务只会运行一个服务,所以会非常的节省资源。但这也可能会导致应用漏洞的存在,当然百度云还处于快速发展阶段,4月份已经发布多个新版本的更新,所以很快百度云推送将会非常适合于生产环境的应用。

百度云推送SDK下载地址:http://developer.baidu.com/wiki/index.php?title=docs/cplat/push/sdk#.E5.AE.A2.E6.88.B7.E7.AB.AFSDK (包含使用手册和示例代码)

《BAE(百度云)安卓云推送服务》有3个想法

评论已关闭。