I-云端消息推送

开发者可以通过 XLinkCloudDelegate 接收服务器的推送消息。这里的推送不单指通常意义上的文本消息的推送,还包含用户或者设备变化的消息推送。

一、推送消息对象

XLinkEventNotify类结构如下所示:

@interface XLinkEventNotify : NSObject
/** 通知事件触发来源类型 */
@property(nonatomic, assign) EventNotifyFromType fromType;
/** notify来源 */
@property(nonatomic, assign) uint32_t fromID;
 
/** 消息类型 */
@property(nonatomic, assign) EventNotifyType messageType;
 
/** 通知事件标志 */
@property(assign, nonatomic) EventNotifyFlag notifyFlag;
 
/** 消息的原始数据 */
@property(nonatomic, copy) NSData *notifyData;
 
@end
  • 消息来源类型
来源类型 说明 对应ID说明
EventNotifyFromSever 来自服务端 0(固定值)
EventNotifyFromDevice 来自设备 deviceId
EventNotifyFromAPP 来自APP appId
  • 消息类型
消息类型 说明
EventNotifyTypeDataPointChanged 1 设备通知,数据端点变化通知
EventNotifyTypeDataPointAlert 2 设备告警,数据端点变化引起的告警
EventNotifyTypeDeviceShare 3 设备分享,设备管理员发出的分享
EventNotifyTypeBoardcast 4 消息广播推送
EventNotifyTypeDevicePropChanged 5 设备属性变化通知
EventNotifyTypeSubscribeChanged 6 设备与用户订阅关系变化通知
EventNotifyTypeDeviceOnlineStateChanged 7 设备在线状态变化通知
EventNotifyTypeDeviceOnlineStateAlert 8 设备在线状态告警
EventNotifyTypeHomeMessage 9 家庭消息通知,留言板消息
EventNotifyTypeHomeInvite 10 家庭邀请通知
EventNotifyTypeHomeDeviceAuthrizeChanged 11 家庭设备权限变化
EventNotifyTypeHomeMemberChanged 12 家庭成员变化
EventNotifyTypeHomeDeviceChanged 13 家庭设备变化

二、推送消息对象的数据结构

各类型对应的数据请参考实体类结构:

消息类型 实体类
1 设备通知,数据端点变化通知 XLinkDataPointChangeNotify
2 设备告警,数据端点变化引起的告警 XLinkDataPointAlertNotify
3 设备分享,设备管理员发出的分享 XLinkDeviceShareNotify
4 消息广播推送 XLinkBroadcastNotify
5 设备属性变化通知 XLinkDevicePropChangedNotify
6 设备与用户订阅关系变化通知 XLinkSubscriptionChangeNotify
7 设备在线状态变化通知 XLinkDeviceOnlineStateChangedNotify
8 设备在线状态告警 XLinkDeviceOnlineStateAlertNotify

三、推送消息解析

开发者可以通过 eventNotify.messageType的来判断消息类型,再根据 eventNotify.notifyData 来处理消息数据。SDK 内置了 EventNotifyHelper 类方便开发者解析消息推送,当需要对 EventNotify 的数据进行处理时,可以通过 EventNotifyHelper 进行快速辅助处理

//如以下示例,通过EventNotifyHelper可快速得到订阅信息变更的推送消息对象
 XLinkDeviceShareNotify *shareNotify = [EventNotifyHelper parseDeviceShareNotifyWithData:eventNotify.notifyData];

若 EventNotifyHelper 中不存在对应的 API 可以直接进行通知事件的解析时,则可以使用以下的通用解析方法进行处理

//使用通用解析方式解析出home设备变更的推送消息对象
NSData *payload = [eventNotify.notifyData subdataWithRange:NSMakeRange(2, eventNotify.notifyData.length - 2)];
NSDictionary *recDict = [NSJSONSerialization JSONObjectWithData:payload
                                                        options:NSJSONReadingMutableLeaves
                                                          error:nil];

关于home相关的通知信息暂时都未提供相关的解析方法

强烈建议使用此辅助类进行事件的解析。由于通知事件实际上是字符串数据,当必须自行进行数据解析时,请忽略 payload 的前两个字节(表示该字符串的长度),再将 payload 的二进制数据转成字符串再进行 json 解析。

注1:开发者在使用sdk时,如果想避免通过轮询的方式来更新状态,应利用上述通知来更新状态

注2:目前消息通知在服务器端不会缓存,即离线后上线,期间的消息通知不会再次收到

注3:消息通知功能需用户登录,并使用云平台服务

没找到需要的文档?
你可以提交工单反馈 或 阅读常见问题