MSS SDK を追加した後、SDK を使用する前にプロジェクトの構成が必要です。
説明 2020 年 6 月 28 日以降、mPaaS は 10.1.32 ベースラインのメンテナンスを終了しました。10.1.68 または 10.1.60 ベースラインシリーズをご利用ください。ベースラインをスペックアップするには、「mPaaS 10.1.68 Upgrade Guide」または「mPaaS 10.1.60 Upgrade Guide」をご参照ください。 |
前提条件
SDK バージョン 10.1.32 以降を使用していることを確認してください。
現在の SDK バージョンは、mpaas_sdk.config ファイルで確認できます。

プロジェクトの構成
プロジェクト内に meta.config ファイルが存在することを確認してください。このファイルには、Sync サービスのエンドポイントやポートなどの構成情報が含まれています。
最新のプラグインを使用して Sync SDK を追加した場合、このファイルは自動的に生成されます。
プロジェクト内に
meta.configファイルが存在しない場合、コンソール > コード管理 > コード構成 ページにアクセスし、
.config構成ファイルをダウンロードします。その後、ファイル名をmeta.configに変更し、プロジェクトに追加してください。
旧バージョンからのスペックアップに関する注意事項
10.1.32 より後のバージョンでは、DTSyncInterface クラスに対して Category ファイルが不要になりました。代わりに、中間レイヤーが meta.config ファイルから構成を読み取ります。スペックアップ後は、プロジェクト内のレガシーな構成を確認し、削除してください。

コード例
同期イベントをリッスンするには、クラスを作成します。RAM 常駐型サービスが、Sync メッセージを継続的にリッスンするのに最適です。以下の例では、同期イベントをリッスンするために MySyncService クラスを作成しています。
同期イベントをリッスンする前に、ビジネス ID 名を定義します。この名前は、データ同期コンソール内の同期構成 ID に対応します。このパラメーターにより、クライアントがサービスに対して識別されます。以下の例では、ビジネス ID 名は SYNC-TRADE-DATA です。
#import <MPMssAdapter/MPSyncInterface.h>
#define SYNC_BIZ_NAME @"SYNC-TRADE-DATA"
@implementation MySyncService
+ (instancetype)sharedInstance
{
static MySyncService *bizService;
static dispatch_once_t llSOnceToken;
dispatch_once(&llSOnceToken, ^{
bizService = [[self alloc] init];
});
return bizService;
}
-(instancetype)init
{
self = [super init];
if (self) {
[MPSyncInterface initSync];
BOOL registerSingleDeviceSync = [MPSyncInterface registerSyncBizWithName:SYNC_BIZ_NAME syncObserver:self selector:@selector(revSyncBizNotification:)];
[MPSyncInterface bindUserWithSessionId:@"SESSION_DEMO"]; // User はコンソールからコマンドを送信する際に必要な userId に対応し、MPaaSInterface の userId 関数の値と一致する必要があります。sessionId はクライアントの権限付与トークンです。userId および sessionId はユーザーのログイン時に返されます。いずれかの値が変更された場合は、この関数を再度呼び出して持続的接続を再確立してください。
}
return self;
}
-(void)revSyncBizNotification:(NSNotification*)notify
{
NSDictionary *userInfo = notify.userInfo;
dispatch_async(dispatch_get_main_queue(), ^{
// ビジネスデータを処理します
[MySyncService handleSyncData:userInfo];
// ビジネスデータの処理が完了したことを Sync SDK に通知するためのコールバックを行います。
[MPSyncInterface responseMessageNotify:userInfo];
});
}
+(void)handleSyncData:(NSDictionary *)userInfo
{
NSString * stringOp = userInfo[@"op"];
NSArray *op = [NSJSONSerialization JSONObjectWithData:[stringOp dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:nil];
if([op isKindOfClass:[NSArray class]]){
[op enumerateObjectsUsingBlock:^(NSDictionary * item, NSUInteger idx, BOOL *stop) {
if([item isKindOfClass:[NSDictionary class]]){
NSString * plString = item[@"pl"];// ビジネスデータペイロード
if(item[@"isB"]){
NSData *dataPl = [[NSData alloc] initWithBase64EncodedString:plString options:kNilOptions];
NSString *pl = [[NSString alloc] initWithData:dataPl encoding:NSUTF8StringEncoding];
NSLog(@"biz payload data:%@,string:%@",dataPl,pl);
}else{
NSLog(@"biz payload:%@",plString);
}
}
}];
}
}
-(void)dealloc
{
BOOL unRegisterSingleDeviceSync = [MPSyncInterface unRegisterSyncBizWithName:SYNC_BIZ_NAME syncObserver:[MySyncService sharedInstance]];
[MPSyncInterface removeSyncNotificationObserver:self];
}
@end