全部产品
云市场

使用 SDK

更新时间:2020-03-18 10:57:32

前置条件

确认您所使用的 SDK 版本 ≥ 10.1.32。

说明:您可以在 mpaas_sdk.config 文件中查看到当前使用的 SDK 版本。
iOS查看SDK版本

配置工程

确保工程中添加了 meta.config 文件,该文件包含 Sync 服务地址、端口等配置信息:

  • 若您使用最新版插件添加了 Sync SDK,那么该文件会自动生成。
  • 如果您的工程中没有 meta.config 文件,您可以前往 控制台 > 代码管理 > 代码配置 下载 .config 配置文件,重命名为 meta.config 后,添加到工程中。

    meta_config

旧版本升级注意事项

10.1.32 版本之后不再需要添加 DTSyncInterface 类的 Category 文件,中间层会实现包装从 meta.config 中读取,升级版本后请检查工程中是否存在旧版本配置,如果有请移除。下面为新版本应移除的 DTSyncInterface 类的 Category 文件。

配置工程

代码示例

以下为注册业务、获取数据代码的示例。

在接入代码之前需要申请好具体的同步业务的业务标识,获取到对应的名字。这个名字就是作为使用者的您和服务提供者联系的纽带。以下示例中的同步配置标识为 SYNC-TRADE-DATA

为了实现监听同步业务的逻辑,需要创建一个类、最好是常驻内存的服务来一直监听 Sync 消息。例如下面的示例,创建了一个 MySyncService 类来监听同步业务的逻辑。

  1. #import <MPMssAdapter/MPSyncInterface.h>
  2. #define SYNC_BIZ_NAME "SYNC-TRADE-DATA";
  3. @implementation MySyncService
  4. + (instancetype)sharedInstance
  5. {
  6. static MySyncService *bizService;
  7. static dispatch_once_t llSOnceToken;
  8. dispatch_once(&llSOnceToken, ^{
  9. bizService = [[self alloc] init];
  10. });
  11. return bizService;
  12. }
  13. -(instancetype)init
  14. {
  15. self = [super init];
  16. if (self) {
  17. [MPSyncInterface initSync];
  18. BOOL registerSingleDeviceSync = [MPSyncInterface registerSyncBizWithName:SYNC_BIZ_NAME syncObserver:self selector:@selector(revSyncBizNotification:)];
  19. [MPSyncInterface bindUserWithSessionId:@"SESSION_DEMO"]; // 此处的 User 对应控制台下发命令时,所需要填写的 userId, 需要和 MPaaSInterface 的 userId 函数中配置的值相对应;sessionId 是客户端携带的授权 token,userId 和 sessionId 都是用户登录系统返回的数据,当 userId 和 sessionId 变化时,需要重新调用此函数才能保证长连接的建立正确。
  20. }
  21. return self;
  22. }
  23. -(void)revSyncBizNotification:(NSNotification*)notify
  24. {
  25. NSDictionary *userInfo = notify.userInfo;
  26. dispatch_async(dispatch_get_main_queue(), ^{
  27. //业务数据处理
  28. [MySyncService handleSyncData:userInfo];
  29. //回调 SyncSDK,表示业务数据已经处理
  30. [MPSyncInterface responseMessageNotify:userInfo];
  31. });
  32. }
  33. +(void)handleSyncData:(NSDictionary *)userInfo
  34. {
  35. NSString * stringOp = userInfo[@"op"];
  36. NSArray *op = [NSJSONSerialization JSONObjectWithData:[stringOp dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:nil];
  37. if([op isKindOfClass:[NSArray class]]){
  38. [op enumerateObjectsUsingBlock:^(NSDictionary * item, NSUInteger idx, BOOL *stop) {
  39. if([item isKindOfClass:[NSDictionary class]]){
  40. NSString * plString = item[@"pl"];//业务数据 payload
  41. if(item[@"isB"]){
  42. NSData *dataPl = [[NSData alloc] initWithBase64EncodedString:plString options:kNilOptions];
  43. NSString *pl = [[NSString alloc] initWithData:dataPl encoding:NSUTF8StringEncoding];
  44. NSLog(@"biz payload data:%@,string:%@",dataPl,pl);
  45. }else{
  46. NSLog(@"biz payload:%@",plString);
  47. }
  48. }
  49. }];
  50. }
  51. }
  52. -(void)dealloc
  53. {
  54. BOOL unRegisterSingleDeviceSync = [MPSyncInterface unRegisterSyncBizWithName:SYNC_BIZ_NAME syncObserver:[MySyncService sharedInstance]];
  55. [MPSyncInterface removeSyncNotificationObserver:self];
  56. }
  57. @end