-
Notifications
You must be signed in to change notification settings - Fork 0
iOS Implement LobiRankingSDK TW
※Unity專用LobiRanking的安裝及導入方法請參考此處
LobiRanking框架可提供iOS及Android應用程式排行榜功能。
- 支援OS: iOS 5.1.1 或以上版本
- 支援架構: armv7, armv7s, arm64
- 需事先準備的檔案與資料
- LobiCore框架、組件 (LobiSDK整合框架)
- LobiRanking框架、組件
- Client ID
LobiRanking框架由下列多個檔案建構而成。
- LobiRanking.framework
包含LobiRanking程式的主要框架
- LobiRanking.h (與LobiRanking框架同放一起)
- LobiAPI+Ranking.h (與LobiRanking框架同放一起)
- LobiRanking.bundle
素材整合檔案,包含LobiRanking的圖像檔案與在地化檔案。
使用Lobi SDK必須備有Client ID。
Client ID可自開發人員專屬頁面取得。
詳細內容請參照Lobi SDK的導入前置流程。
於LobiSDK使用聊天、錄影、排名等各項功能時,必須要有LobiCore框架。
將LobiCore.framework、LobiCore.bundle自檔案系統拖曳至Xcode專案中以做新增。
設定TARGETS -> 若Build Settings的Other Linker Flags中沒有-ObjC
,請新增此程式碼。
為連結帳號至Lobi主要應用程式及建立應用程式間的連動性,需設定URL配置。
請以nakamapapp-<Client ID>
的形式,登錄URL配置。
有關如何取得Client ID,請參照Lobi SDK的導入前置流程。
將LobiRanking.framework、LobiRanking.bundle自檔案系統拖曳至Xcode專案中以做新增。
請在專案的TARGET設定 -> Build Phases的Link Binary with Libraries中新增下列framework。
※若目標為包含iOS4.3版本的iOS,請將框架由required設定為optional。
- LobiCore.framework
- libsqlite3.0.dylib
- OpenGLES.framework
- QuartzCore.framework
- MediaPlayer.framework
- MessageUI.framework
- CoreData.framework
- Security.framework
- CoreImage.framework (optional)
- StoreKit.framework (optional)
- AVFoundation.framework (optional)
- Foundation.framework (optional)
- AudioToolbox.framework (optional)
- AssetsLibrary.framework (optional)
- StoreKit.framework (optional)
- UIKit.framework (optional)
新增完畢的函式庫如以下圖像所示。
為執行Lobi SDK初始化,請將下列標頭檔案匯入AppController中。
#import <LobiCore/LobiCore.h>
啟動應用程式時,會執行LobiSDK的初始化設定。
請在AppDelegate的application:didFinishLaunchingWithOptions:
函式中插入以下程式碼。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[LobiCore setupClientId:@"Client ID" accountBaseName:@"預設使用者名稱"];
-
clientID
(必備)
請指定由開發人員專屬頁面(http://developer.lobi.co)所取得的ID。 -
accountBaseName
(必備)
註冊LobiSDK時所使用的預設使用者名稱。
當使用者名稱重複時。將會自動變更為不同的使用者名稱。
例如,當accountBaseName
取名為「勇者」時,使用者名稱將會變更為「勇者1」、「勇者2」、「勇者3」……以此類推。
製作的應用程式存有帳號概念時,建議將該帳號名稱取為accountBaseName
。
若應用程式並無帳號概念,也可以輸入固定值。
- 使用LobiAPI Class,並使用API
- 顯示LobiCore / LobiRec / LobiRanking所提供的畫面,以及使用其功能
為顯示LobiSDK的聊天訊息與個人資料畫面等,以LobiCore
的setRootViewController
函式設定UIWindow Class所設定的viewController。
請在AppDelegate的application:didFinishLaunchingWithOptions:
函式中插入以下程式碼。
/// 中間省略...
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
self.window.rootViewController = [[ViewController alloc] init];
[LobiCore setRootViewController:self.window.rootViewController];
為了掌控因URL配置而不同的事件,請在AppDelegate中新增以下程式碼。
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{
if ([LobiCore handleOpenURL:url]) {
return YES;
}
return NO;
}
LobiRanking框架中可於呼叫註冊API,或於顯示排行榜畫面時建立帳號。
建立框架的帳號乃是應用程式專用的帳號,也可以綁定Lobi本身所使用的主帳號。
透過綁定主帳號,可與Lobi本身的朋友們一起競爭排名。
使用API建立帳號時,請使用以下的程式碼。
#import <LobiCore/LobiAPI.h>
/// 中間省略...
[LobiAPI signupWithBaseName:@"<帳號名稱>"
completion:^(LobiNetworkResponse *res)
{
if (res.error) {
return ;
}
/// 註冊成功
}];
- 帳號名稱 用來建立帳號的基礎名稱。若該名稱已被使用,系統將自動以該名稱為基礎,於字尾加入綴字,形成獨特的名稱。
NOTE
當帳號已經存在時,不會再建立新帳號,res將以nil返回。
傳送得分時,請記述以下程式碼。
#import <LobiRanking/LobiRanking.h>
/// 中間省略...
/* 確認帳號是否建立完成 */
if (![LobiCore isReady]) {
NSLog(@"帳號尚未建立");
return;
}
else {
[LobiAPI sendRanking:@"<Ranking ID>"
score:<Score>
handler:^(LobiNetworkResponse *res)
{
if (res.error) {
return ;
}
/// 排行榜傳送成功
}];
}
- Ranking ID
請指定由開發人員專屬頁面(http://developer.lobi.co)所建立的應用程式Ranking ID。
- Score
以整數形式傳送得分。
- 顯示形式
- 整數:
- 123 (欲顯示值)
- 123 (傳送值)
- 固定小數點:
- 小數點第1位 1.2 (欲顯示值)
- 12 (傳送值)
- 固定小數點:
- 小數點第2位 1.21 (欲顯示值)
- 121 (傳送值)
- 固定小數點:
- 小數點第3位 2.342 (欲顯示值)
- 2342 (傳送值)
- 時間:
- 分 00:59 (欲顯示值)
- 59 (傳送值)
- 分 01:05 (欲顯示值)
- 65 (傳送值)
- 時間:
- 秒 00:00:59 (欲顯示值)
- 59 (傳送值)
- 秒 00:01:05 (欲顯示值)
- 65 (傳送值)
- 時間:
- 毫秒 固定小數點第3位 00:00:00.975 (欲顯示值)
- 975 (傳送值)
- 毫秒 固定小數點第3位 00:00:01.075 (欲顯示值)
- 1075 (傳送值)
- 整數:
欲取得排行榜的詳細資訊,請記述以下的程式碼。
#import <LobiRanking/LobiRanking.h>
/* 確認帳號是否建立完成 */
if(![LobiCore isReady]){
NSLog(@"帳號尚未建立");
return;
}
else {
[LobiAPI getRanking:@"<Ranking ID>"
type:<Type>
origin:<Origin>
cursor:<Cursor>
limit:<Limit>
handler:^(LobiNetworkResponse *res)
{
if (res.error) {
return ;
}
// 成功取得排行榜
}];
}
- Ranking ID
請指定由開發人員專屬頁面(http://developer.lobi.co)所建立的應用程式Ranking ID。
-
Type
-
KLRRankingRangeToday
(本日) -
KLRRankingRangeWeek
(本週) -
KLRRankingRangeAll
(全部) -
KLRRankingRangeLastWeek
(上週)
請選擇排行榜區間。
-
-
Origin
-
KLRRankingCursorOriginTop
(最高名次) -
KLRRankingCursorOriginSelf
(我的名次)
請選擇取得名次的基準。
-
-
Cursor
選擇KLRRankingCursorOriginTop
時,請指定由哪一位名次開始取得。
- Limit
- 選擇
KLRRankingCursorOriginTop
時
Cursor 請指定取得幾人名次 - 選擇
KLRRankingCursorOriginSelf
時
請指定取得前後幾人名次
- 選擇
NOTE
在Origin指定KLRRankingCursorOriginSelf
時,將會取得 (Limit所指定的數值 * 2 + 1) 。
<回應範例:成功時> 回應為NSDictionary形式。
@{
@"cursor" : @"1",
@"limit" : @"10",
@"orders" : @[
@{
@"display_score" : @"12345條",
@"icon" : @"https://lobi.co/img/icon/none_user_72.png",
@"is_self" : @"0",
@"name" : @"小貓1",
@"rank" : @"1",
@"score" : @"12345",
@"uid" : @"a1f952adefa56fdc2a83a0bc108e77384ff35a46",
},
@{
@"display_score" : @"1234條",
@"icon" : @"https://lobi.co/img/icon/none_user_72.png",
@"is_self" : @"1",
@"name" : @"小貓2",
@"rank" : @"2",
@"score" : @"1234",
@"uid" : @"3d442d023d04d8f4735171c614a2d945febd2f30",
},
...
],
@"ranking" : @{
@"icon" : @"https://lobi.co/img/icon/none_appranking_120.png",
@"id" : @"shippo",
@"join_count" : @"100",
@"name" : @"吸尾巴",
},
@"self_order" : @{
@"display_score" : @"12345條",
@"icon" : @"https://lobi.co/img/icon/none_user_72.png",
@"is_self" : @"0",
@"name" : @"小貓1",
@"rank" : @"1",
@"score" : @"12345",
@"uid" : @"a1f952adefa56fdc2a83a0bc108e77384ff35a46",
},
@"total_results" : @"10"
}
NOTE
在self_order
裡設定自己的排行榜資料。若玩家沒有上傳得分至排行榜,self_order
的數值將為空白。
欲取得指定玩家的排行榜一覽時,請記述以下程式碼。
#import <LobiRanking/LobiRanking.h>
...
/* 確認帳號是否建立完成 */
if (![LobiCore isReady]) {
NSLog(@"帳號尚未建立");
return;
}
else {
/* 取得自己的排行榜一覽時 */
[LobiAPI getRankingList:<RankingList>
handler:^(LobiNetworkResponse *res)
{
if (res.error) {
return;
}
}];
/* 取得指定玩家的排行榜一覽時 */
[LobiAPI getRankingList:<RankingList>
user:@"<???ID>"
handler:^(LobiNetworkResponse *res)
{
if (res.error) {
return ;
}
}];
}
-
RankingList
-
KLRRankingRangeToday
(本日) -
KLRRankingRangeWeek
(本週) -
KLRRankingRangeAll
(全部) -
KLRRankingRangeLastWeek
(上週)
請選擇排行榜區間。
-
-
玩家ID 指定欲取得的玩家ID。
<回應範例:成功時> 回應為NSDictionary形式。
@{
@"app" : @{
@"appstore_uri" : @"http://phobos.apple.com/...",
@"playstore_uri" :"https://play.google.com/store/...",
@"icon" : @"https://lobi.co/img/icon/none_app_120.png",
@"name" : @"貓咪排行榜",
@"uid" : @"444323ed3ee431c93e2973af27de611c6571666d"
},
@"rankings" : @[
@{
@"order" : @{
@"display_score" : @"12345條",
@"icon" : @"https://lobi.co/img/icon/none_user_72.png",
@"is_self" : @"0",
@"name" : @"小貓1",
@"rank" : @"1",
@"score" : @"12345",
@"uid" : @"a1f952adefa56fdc2a83a0bc108e77384ff35a46",
},
@"ranking" : @{
@"icon" : @"https://lobi.co/img/icon/none_appranking_120.png",
@"id" : @"shippo",
@"join_count" : @"100",
@"name" : @"吸尾巴",
}
},
...
]
}
NOTE
在order
裡設定自己的排行榜資料。若玩家沒有上傳得分至排行榜,order
的數值將為空白。
欲顯示排行榜畫面時,請記述以下程式碼。
NOTE
當帳號尚未建立時,將依LobiCore ClasssetupClientId:accountBaseName:
所設定的名稱為基礎,自動建立新的帳號。
#import <LobiRanking/LobiRanking.h>
- (void)presentRanking
{
[LobiRanking presentRanking];
}
LobiSDK目前支援以日語及英語撰寫程式。 當遊戲為純日語,而該遊戲內的LobiSDK卻僅顯示英語時,必須變更所導入之專案本身的預設語言。
如下圖所示,從TARGET的Info頁籤,將Localization native development region
的數值設定為Japan
,並且將Localizations
的數值更改為Japanese
後即可支援。
變更預設語言也無法顯示日語的LobiSDK時,請在專案內新增InfoPlist.strings
。
開啟Xcode右方的公用程式,執行InfoPlist.strings
在地化。
新增完畢的InfoPlist.strings將會依照各語言建立。