云推送
服务概述
云推送(Push)是新浪云开发的协助开发者推送手机通知的服务,目前支持iOS和Android系统的推送。
iOS版本介绍
服务说明
开发者通过编写代码调用API接口(或直接通过新浪云提供的页面)推送消息,消息先存到新浪云,再由新浪云的推送服务发送到苹果的推送服务器(APNs),最后由APNs投递到用户的手机。请参照下图:
使用推送服务,首先请在新浪云应用的“服务管理”列表中找到“云推送”服务页面,在“推送设置”页面上传证书。证书的生成请参考苹果官方文档。证书上传成功后就可以通过调用新浪云云推送服务接口(或“云推送”页面“推送消息”页)推送手机通知了。
注解
为提高苹果推送的及时性和成功率,请开发者注意以下几点:
- 请注意证书的类型,正确选择开发环境和正式环境。
- 请注意证书的过期时间。bundle ID与App Id 保持一致。
- push函数调用成功,只代表消息已推送到新浪云服务器,并不代表成功推送到苹果服务器。(“推送统计”展示的推送成功数代表成功推送到苹果服务器)。
- 如需查看推送成功率(该数据会有十分钟左右延迟),可通过“推送统计”查看,也可以使用getinfo函数查看(目前该接口只提供当天的数据)。
- 如需要查看具体失败的原因,可通过“日志中心”的云推送页查看。
服务限制
iOS API使用手册
使用示例
下面使用代码来说明云推送iOS服务的调用方式。
Android版本介绍
服务说明
开发者通过编写代码调用API接口(或直接通过新浪云提供的页面)推送消息,消息先存到新浪云,再由新浪云的推送服务投递到用户的手机。请参照下图:
使用推送服务,首先需要在新浪云应用的“服务管理”列表中找到“云推送”服务页面,在“推送设置”页面申请AppID。
Android Push Service用AppID来标识应用。申请完AppID后,即可参考 Android SDK 说明在Android App中嵌入新浪云的SDK了。
App开发完成后,可以使用新浪云云推送服务接口推送手机通知。
服务限制
Android SDK 说明
概述
新浪云 Android Push SDK以Jar包的形式提供,方便开发者使用,对外的调用类只有一个PushManager,通过这个类可以打开、关闭、刷新Push的通道。Push通道以TCP长连接的形式存在。
集成SDK
从 云推送Android SDK下载新浪云云推送Android的SDK并解压。
在Eclipse中打开需要使用云推送服务的工程,按照如下步骤集成。
在工程根目录下的libs文件夹中,导入SDK里的SinaPush_{version}_SAE_release.jar包和最新的android-support-v{version}.jar 包,若没有libs目录,则选中工程,右键new->folder,命名为libs。
在应用的 AndroidManifest.xml 中添加相关权限
在应用的AndroidManifest.xml中配置服务
注解
上文Demo中的1004,应替换为自己应用的AppID,AppID需要从新浪云的服务页面申请。
在调用所有接口前,必须先进行初始化,且初始化只需要调用一次。
接收 Push 消息
消息分类
Push消息分为两类,一类是SDK处理的消息,一类是透传给App处理的消息。
- SDK处理的消息:Android Push SDK 收到消息后,SDK直接处理,不会透传给App。
- 透传给App的消息:Android Push SDK 收到消息后,直接封装,透传给App处理。如果想将消息透传给App,需要在推送消息时,添加extra字段。如:使用示例中push时添加的 $extra参数。
注解
如果想由应用自己来处理、展示 push 消息,那么必须由 Server 端在消息中 extra 字段内添加 json 格式的信息:
handle_by_app: 1 为 app 处理, 0 为 SDK 处理, 默认为 0。
接收Push消息
Push 的消息类型
类型 |
说明 |
消息实体 |
---|---|---|
MSG_TYPE_MPS_PUSH_DATA |
Push 消息 |
PushDataPacket |
MSG_TYPE_ACTION_SWITCH_CHANNEL |
通道打开消息 |
ActionResult |
MSG_TYPE_SAE_DATA |
Aid 消息 |
String |
MSG_CHANNEL_HAS_BEEN_BUILDED |
通道打开消息 |
无 |
注解
aid是推送服务的设备标识,推送消息时,会要求提供aid参数:
- 设备的aid不是永久不变的,设备长时间未连接到服务器,aid标识会被服务器端删除,再次连接时会重新分配aid。
- 清除App数据也会导致aid改变。
Demo
跳转到具体页面
1. 跳转到某个应用的页面: SDK 收到 push 消息后会发出一个 notification 或是弹出一个 dialog。当用户点击notification 或对话框上的按钮时,会跳转到相应的页面。例如掌中新浪,收到了一个 push下来的新闻消息,展示为 notification,点击后跳转到显示新闻的 activity 中。要想完成上述功能,需要在 push 消息中 acts 字段的参数中包含该应用的包名和 activity 的类名。
动作名/动作 ID:2
参数 1:包名
参数 2:完整类名
“acts”: [“2,com.sina.news,com.sina.news.ui.NewContentActivity”],
2. 跳转到浏览器: SDK 收到消息后如果想跳转到浏览器,需要在 push 消息中 acts 字段的参数中包含 url地址。
动作名/动作 ID:4
参数 1:url 地址
“acts”: [“4,http://www.sina.com”],
3. 通过 Scheme 跳转: 通过 Scheme 跳转到某个应用的 activity 中。
动作名/动作 ID:5
参数 1:scheme
“acts”: [“5,sinaweibo://sendweibo”],
Android SDK API说明
- public void
initPushChannel
(String...params) -
打开特定类型的Push通道,准备接收Push消息
注解
在通道的准备过程中,调用功能接口可能会失败, 请先处理initPushChannel(string)的执行结果。
- public void
close
() 关闭当前打开的通道,停止接收Push消息, 直到再次调用initPushChannel()。
- public void
refreshConnection
() 刷新连接,如果连接断开,则立即进行重连。
Android API使用手册
使用示例
下面使用代码来说明云推送Android服务的调用方式。