-
Notifications
You must be signed in to change notification settings - Fork 0
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];
}