Skip to content

transfer nakamap to lobi

osawa-shunsuke edited this page Feb 25, 2015 · 5 revisions

ナカマップSDKからLobiSDKへの移行例(起動)

#移行方法

  • プロジェクトからNakamap.bundle, Nakamap.frameworkの削除
  • Lobi SDK導入までのフローに従い、プロジェクト設定、ソースコードの変更(※)を行う

※ソースコードの変更例

  • クラス名の変更(NKAPI→LobiAPIなど)
  • インポートするヘッダファイルの変更(#import <Nakamap/Nakamap.h>#import <LobiCore/LobiCore.h>など)
  • 未読の表示
    • 未読バッジ(NKBadgeButton)の代わりに未読を表示するView(文字列を表示可能な任意のView)を作成
    • 未読数を下記APIで取得し、上記Viewの表示を更新
//チャットの未読があるグループの数を取得する
/**
 * チャットの未読があるグループの数を取得します。
 * 成功時のresponseは@{@"count":(NSString *)value}のNSDictionaryとなります。
 * 10件以上の未読グループが存在する場合のレスポンスは@{@"count":@"9+"}となります。
 */
+ (void)getUnreadGroupCountWithHandler:(LobiNetworkHandler)handler;

/**
 * グループを指定して未読のチャット数を取得します。
 * 成功時のresponseは@{@"count": (NSNumber *)value}のNSDictionaryとなります。
 *
 * @param groupExternalID 未読チャット数を取得するグループのIDを指定します。
 */
+ (void)getUnreadCountGroupWithExternalID:(NSString *)externalID
                               completion:(LobiNetworkHandler)handler;

#Lobiの起動に関係する部分の変更点

  • SDK初期化方法の変更
  • サインアップAPI(signupWithBaseName:handler:等)の引数で指定するhandlerの型の変更
  • Lobiの画面を呼び出すコードの簡素化

※具体的な変更例は下記「コードの例」を参照

#コードの例

// ナカマップSDKの初期化(アプリ起動時等に1回だけ実行する)
NKConfiguration *configuration = [NKConfiguration currentConfiguration];
configuration.clientID = @"<クライアントID>";
configuration.accountBaseName = @"<デフォルトのユーザー名>";

-----
// ナカマップ起動
void (^resBlock)(NKAPIStatusCode code, id response) = ^(NKAPIStatusCode code, id response) {
	if (code == NKAPIStatusCodeSuccess) {
		// ナカマップの画面を表示
		NKNakamapViewController *viewController = [[NKNakamapViewController alloc] init];
		viewController.customTransitionEnabled = YES;
		[parent presentModalViewController:viewController animated:YES];
	}
	else {
 		// error
	}
};

if (encryptedID) { 
	// ExId があるとき
	[NKAPI signupWithBaseName:@"<デフォルトのユーザー名>"
		  encryptedExternalID:@"{ENCRYPTED_EXTERNAL_ID}"
						   IV:@"{IV}"
					  handler:resBlock];
}
else { 
	// ExId がないとき
	[NKAPI signupWithBaseName:@"<デフォルトのユーザー名>"
					  handler:resBlock];
}
// LobiSDKの初期化とviewControllerの設定(アプリ起動時等に1回だけ実行する)
[LobiCore setupClientId:cliendID accountBaseName:accountBaseName];
[LobiCore setRootViewController:self.window.rootViewController];

-----
// Lobi起動
void (^resBlock)(LobiNetworkResponse *res) = ^(LobiNetworkResponse *res) {
	if (!res.error) {
		// 公開グループのチャット画面を表示
		[LobiChat presentGroupListWithGroupListType:LobiChatGroupListTypePublic];
	}
	else {
		// error
	}
};

if (encryptedExternalID) {
	// ExId があるとき
	[LobiAPI signupWithBaseName:@"<デフォルトのユーザー名>"
			encryptedExternalId:@"{ENCRYPTED_EXTERNAL_ID}"
					  encryptIv:@"{IV}"
						handler:resBlock];
}
else {
	// ExId がないとき
	[LobiAPI signupWithBaseName:@"<デフォルトのユーザー名>"
					 completion:resBlock];
}
Clone this wiki locally