Skip to content

iOS Implement LobiRankingSDK TW

osawa-shunsuke edited this page Nov 9, 2015 · 1 revision

LobiRanking的安裝及導入方法(iOS)

Unity專用LobiRanking的安裝及導入方法請參考此處


請事先閱讀以下內容

LobiRanking導入準備

LobiRanking框架可提供iOS及Android應用程式排行榜功能。

  • 支援OS: iOS 5.1.1 或以上版本
  • 支援架構: armv7, armv7s, arm64
  • 需事先準備的檔案與資料
    • LobiCore框架、組件 (LobiSDK整合框架)
    • LobiRanking框架、組件
    • Client ID

LobiRanking框架結構

LobiRanking框架由下列多個檔案建構而成。

框架檔案

  • LobiRanking.framework
    包含LobiRanking程式的主要框架

標頭檔案

  • LobiRanking.h (與LobiRanking框架同放一起)
  • LobiAPI+Ranking.h (與LobiRanking框架同放一起)

組合檔案

  • LobiRanking.bundle
    素材整合檔案,包含LobiRanking的圖像檔案與在地化檔案。

Client ID

使用Lobi SDK必須備有Client ID。
Client ID可自開發人員專屬頁面取得。
詳細內容請參照Lobi SDK的導入前置流程

新增框架至Xcode專案及專案設定

新增LobiCore框架

於LobiSDK使用聊天、錄影、排名等各項功能時,必須要有LobiCore框架。
將LobiCore.framework、LobiCore.bundle自檔案系統拖曳至Xcode專案中以做新增。

設定Other Linker Flags

設定TARGETS -> 若Build Settings的Other Linker Flags中沒有-ObjC,請新增此程式碼。

設定Info.plist

為連結帳號至Lobi主要應用程式及建立應用程式間的連動性,需設定URL配置。
請以nakamapapp-<Client ID>的形式,登錄URL配置。
有關如何取得Client ID,請參照Lobi SDK的導入前置流程

新增LobiRanking框架

將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初始化處理

Lobi SDK初始化處理

為執行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
    若應用程式並無帳號概念,也可以輸入固定值。

※LobiSDK的初始化設定必須在以下事件發生前執行完畢。

  • 使用LobiAPI Class,並使用API
  • 顯示LobiCore / LobiRec / LobiRanking所提供的畫面,以及使用其功能

設定viewController

為顯示LobiSDK的聊天訊息與個人資料畫面等,以LobiCoresetRootViewController函式設定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配置的支援處理

為了掌控因URL配置而不同的事件,請在AppDelegate中新增以下程式碼。

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation
{
    if ([LobiCore handleOpenURL:url]) {
        return YES;
    }
    return NO;
}

4. 安裝程式 - 使用LobiRanking API

LobiRanking框架中可於呼叫註冊API,或於顯示排行榜畫面時建立帳號。
建立框架的帳號乃是應用程式專用的帳號,也可以綁定Lobi本身所使用的主帳號。
透過綁定主帳號,可與Lobi本身的朋友們一起競爭排名。

4.1 建立帳號

使用API建立帳號時,請使用以下的程式碼。

#import <LobiCore/LobiAPI.h>

/// 中間省略...

    [LobiAPI signupWithBaseName:@"<帳號名稱>"
                     completion:^(LobiNetworkResponse *res)
     {
         if (res.error) {
             return ;
         }

/// 註冊成功
         
     }];
  • 帳號名稱 用來建立帳號的基礎名稱。若該名稱已被使用,系統將自動以該名稱為基礎,於字尾加入綴字,形成獨特的名稱。

NOTE
當帳號已經存在時,不會再建立新帳號,res將以nil返回。

4.2 傳送得分

傳送得分時,請記述以下程式碼。

#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 (傳送值)

4.3 取得排行榜的詳細資訊

欲取得排行榜的詳細資訊,請記述以下的程式碼。

#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的數值將為空白。

4.4 取得排行榜一覽

欲取得指定玩家的排行榜一覽時,請記述以下程式碼。

#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的數值將為空白。

4.5 顯示排行榜畫面

欲顯示排行榜畫面時,請記述以下程式碼。

NOTE
當帳號尚未建立時,將依LobiCore Class setupClientId:accountBaseName: 所設定的名稱為基礎,自動建立新的帳號。

#import <LobiRanking/LobiRanking.h>

- (void)presentRanking
{
	[LobiRanking presentRanking];
}

LobiSDK多語系支援

LobiSDK目前支援以日語及英語撰寫程式。 當遊戲為純日語,而該遊戲內的LobiSDK卻僅顯示英語時,必須變更所導入之專案本身的預設語言。

如下圖所示,從TARGET的Info頁籤,將Localization native development region的數值設定為Japan,並且將Localizations的數值更改為Japanese後即可支援。

變更預設語言也無法顯示日語的LobiSDK時,請在專案內新增InfoPlist.strings

開啟Xcode右方的公用程式,執行InfoPlist.strings在地化。

新增完畢的InfoPlist.strings將會依照各語言建立。


其他框架的安裝及導入

Clone this wiki locally