重要: 2020 年 6 月 28 日以降、mPaaS はベースライン 10.1.32 のサポートを停止しました。10.1.68 または 10.1.60 を代わりに使用してください。ベースラインをバージョン 10.1.32 から 10.1.68 または 10.1.60 にアップグレードする方法については、「mPaaS 10.1.68 アップグレードガイド」または「mPaaS 10.1.60 アップグレードガイド」をご参照ください。 |
MSS SDK を追加した後、SDK を使用する前にプロジェクトを構成する必要があります。
前提条件
SDK バージョンは 10.1.32 以降です。
注: 現在の SDK バージョンは、mpaas_sdk.config ファイルで確認できます。

プロジェクトの構成
MSS アドレスとポート番号を含む meta.config ファイルがプロジェクトに追加されていることを確認します。
最新のプラグインを使用して MSS SDK を追加した場合、ファイルは自動的に生成されます。
プロジェクトに
meta.configファイルが含まれていない場合は、mPaaS コンソールにログインし、[概要] > [コード構成] を選択して、.configファイルをダウンロードし、meta.configに名前を変更して、プロジェクトに追加します。
アップグレードの注意事項
Category クラスの DTSyncInterface ファイルは、バージョン 10.1.32 以降は追加する必要はありません。中間層は meta.config からのパッケージ読み取りを実装します。アップグレード後、プロジェクトに以前のバージョンの構成があるかどうかを確認します。ある場合は削除します。次の図は、アップグレードされたバージョンから削除される Category クラスの DTSyncInterface ファイルを示しています。

コードサンプル
同期サービスを listen するロジックを実現するには、同期メッセージを listen するクラス (できればメモリ常駐サービス) を作成する必要があります。次のコードサンプルでは、同期サービスを listen する MySyncService クラスを作成します。
同期サービスを listen する前に、同期サービスの同期 ID を定義する必要があります (同期 ID は、mPaaS コンソールでプッシュ構成を作成するときにも使用されます)。この同期 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];
// SyncSDK をコールバックして、ビジネスデータが処理されたことを示します。
[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