PLUG iOS 適用ガイド

Quick Start

最新バージョンをダウンロード

PLUG SDKを使用する場合は、XCodeで次のように開発環境を設定します。

  1. Build SettingsのOther Linker Flagsに -ObjCオプションを追加します。

  2. ダウンロードしたサンプルプロジェクトに含まれている次のライブラリを、プロジェクトに追加します。

    • SDWebImage

    • FLAnimatedImage

    • o NAVER IDでログイン

  3. Build PhasesのLink Binary With Librariesに次のライブラリを追加します。追加したライブラリのStatusはRequiredに設定します。

    • AVKit.framework

    • AVFoundation.framework

    • MobileCoreServices.framework

    • SystemConfiguration.framework

    • MediaPlayer.framework

    • AVFoundation.framework

    • CoreMedia.framework

    • AssetsLibrary.framework

    • Security.framework

    • ImageIO.framework

    • QuartzCore.framework

    • SafariServices.framework

    • WebKit.framework

    • ReplayKit.framework(ライブラリのStatusをOptionalに設定します。)

  4. Info.plistのユーザー権限獲得オプションを追加します。

    • NSCameraUsageDescription

    • NSPhotoLibraryUsageDescription

3. 初期化

PLUG SDKが対応する言語に応じて、次のようにPLUG SDKを初期化します。

3.1 PLUG SDK初期化(韓国語のみ対応 - NAVER Cafe)

韓国語のみ対応のPLUG SDKを初期化する時は、次のような初期化情報を設定します。

  • NAVER IDでログイン開発者センターにてアプリケーションを登録する時に受け取ったクライアントID(ClientId)とクライアントシークレット(ClientSecret)

  • NAVER Cafeでカフェを開設し、受け取ったCafe ID

  • NAVER IDでログイン開発者センターにてアプリケーションを登録する時に入力したURL Scheme

  • PLUGが上に乗る親ViewController

  • チャンネルコード(韓国語チャンネルのみを使用する時は、KOREANに設定)

    [[NCSDKManager getSharedInstance] setNaverLoginClientId:@"197CymaStozo7X5r2qR5"
                                     naverLoginClientSecret:@"evCgKH1kJL"
                                                     cafeId:28290504];
                                                     
    [[NCSDKLoginManager getSharedInstance] setNaverLoginURLScheme:@"gLinkSample"];
    
    [[NCSDKManager getSharedInstance] setParentViewController:self];
    
    [[NCSDKManager getSharedInstance] setChannelCode:KOREAN];

3.2 PLUG SDK初期化(外国語のみ対応)

外国語のみ対応のPLUG SDKを初期化する時は、次のような初期化情報を設定します。

  • consumerKey: コミュニティを開設して受け取ったコンシューマーキー(Consumer Key)

  • consumerSecretKey: コミュニティを開設して受け取ったコンシューマーシークレットキー(Consumer Secret Key)

  • cummunityNo: • コミュニティを開設して受け取ったコミュニティNo(communityNo)

  • loungeNo: ラウンジを開設して受け取ったラウンジNo(loungeNo)

  • PLUGが上に乗る親ViewController

    [[NCSDKManager getSharedInstance] setGlobalConsumerKey:@"PLUGTESTKEY"
                                      globalConsumerSecret:@"PLUGTESTSECRET" 
                                      globalCommunityNo:1
                                      globalLoungeNo:58];
                                              
    [[NCSDKManager getSharedInstance] setParentViewController:self];

4. PLUG SDK開始

初期化が完了したら、PLUG SDKを実行します。

4.1 presentMainViewController: メソッド

presentMainViewController: メソッドは、PLUG SDKを開始するメソッドです。次の例は、presentMainViewController: メソッドを実装した例です。

[[NCSDKManager getSharedInstance] presentMainViewController];

NCSDKManager クラス NCSDKManagerクラスはPLUG SDKを制御するクラスです。NCSDKManagerクラスで制御できる機能に関する詳細は、PLUG SDK詳細ガイドの「主な機能の詳細説明」をご参照ください。

4.2 横画面モード、縦画面モード

PLUG SDKは横画面モードと縦画面モードのどちらも対応しています。次の例は、PLUG SDKを横画面モードで実行する例です。

[[NCSDKManager getSharedInstance] setOrientationIsLandscape:YES];

NAVER IDでログイン時、NAVERアプリを使用

NAVER IDでログインする時に、NAVERアプリを使用する場合は次のように追加情報を設定します。

1. NAVER IDでログインにアプリケーションを登録する時に入力したURL Schemeを、プロジェクトに登録します。 2. PLUGを初期化する時に、NAVERアプリログインを許可するように、次のように設定します。

#import <NaverCafeSDK/NCSDKLoginManager.h>
[[NCSDKLoginManager getSharedInstance] setIsNaverAppOauthEnable:YES];

3. NAVER IDでログインが完了すると、PLUGにログイン情報が設定できるようになり、次のようにAppDelegateを設定します。

#import <NaverCafeSDK/NCSDKLoginManager.h>
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { //로그인 정보를 네이버 아이디로 로그인 객체에 설정한다.
    return [[NCSDKLoginManager getSharedInstance] finishNaverLoginWithURL:url];
}

4. アプリケーションでNAVERアプリを開くことができるように、次のような設定をInfo.plistファイルに追加します

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>naversearchapp</string>
    <string>naversearchthirdlogin</string>
</array>

基本チャンネルの言語設定

PLUGの言語別コミュニティであるチャンネルの基本チャンネルは、デバイスに設定された言語で設定されます。基本チャンネルを特定の言語に設定したい場合は、setChannelCode: メソッドを使用します。

次の例は、基本チャンネルを韓国語に設定した例です。

   /**
     * ChannelCode : NCSDKLanguage.h 内の文字列定数
     */
    [[NCSDKManager getSharedInstance] setChannelCode:KOREAN];
}

グローバルコミュニティと韓国内NAVER Cafeに対応するPLUGの初期化

グローバルコミュニティと韓国内NAVER Cafeの両方に対応する時は、韓国内NAVER Cafeに対応するPLUGの初期化と、グローバルコミュニティに対応するPLUGの初期化をすべて適用します

Files and Folders

Dependent Libraries

  • • PLUG SDKを使用する場合は、次のライブラリをプロジェクトに追加し、一緒にビルドする必要があります。ライブラリはサンプルプロジェクトに含まれています。NAVER IDでログイン(4.0.7バージョン)

  • AFNetworking(3.1.0 バージョン)

    • o AFNetworking 2.xバージョンと3.xバージョンをすべて使用できます。PLUG SDKテストは、AFNetworking 3.1.0バージョンで実施しました。

  • SDWebImage(3.8.2 バージョン)

  • FLAnimatedImage-(1.0.12 バージョン)

  • ApiGateway-1.5.0

PLUGの開始と終了

PLUGを特定のタブが選択された状態で開始、または終了します。

presentMainViewController: メソッド

PLUGを実行します。

(void)presentMainViewController;

次の例は、presentMainViewController: メソッドを実装した例です。

/*
  PLUG実行
 */
[[NCSDKManager getSharedInstance] presentMainViewController];

presentMainViewControllerWithTabIndex: メソッド

特定のタブが選択された状態でPLUGを始めます。

(void)presentMainViewControllerWithTabIndex:(NSUInteger)tabIndex;

次の例は、presentMainViewControllerWithTabIndex: メソッドを実装した例です。

typedef NS_ENUM(NSUInteger, GLTabType) {
    kGLTabTypeHome = 0,
    kGLTabTypeNotice = 1,
    kGLTabTypeEvent = 2,
    kGLTabTypeMenuList = 3,
    kGLTabTypeProfile = 4,
};
/*
 NAVER CafeメインのTabIndexで実行
 */
// お知らせ
[[NCSDKManager getSharedInstance] presentMainViewControllerWithTabIndex:kGLTabTypeNotice];
// イベント
[[NCSDKManager getSharedInstance] presentMainViewControllerWithTabIndex:kGLTabTypeEvent];
// 掲示板リスト
[[NCSDKManager getSharedInstance] presentMainViewControllerWithTabIndex:kGLTabTypeMenuList];
// プロフィール
[[NCSDKManager getSharedInstance] presentMainViewControllerWithTabIndex:kGLTabTypeProfile];

presentMainViewControllerWithArticleId: メソッド

掲示板タブに特定の投稿が見える状態でPLUGを始めます。

(void)presentMainViewControllerWithArticleId:(NSUInteger)articleId;

次の例は、presentMainViewControllerWithArticleId: メソッドを実装した例です。

/*
 NAVER Cafeの投稿に移動
 */
[[NCSDKManager getSharedInstance] presentMainViewControllerWithArticleId:36];

presentArticlePostViewControllerWithType: メソッド

画像ファイルや動画ファイルが添付された掲示板投稿画面で、PLUGを開始します。

(void)presentArticlePostViewControllerWithType:(GLArticlePostType)type filePath:(NSString *)filePath;

次の例は、presentArticlePostViewControllerWithType: メソッドを実装した例です。

typedef NS_ENUM(NSUInteger, GLArticlePostType) {
    kGLArticlePostTypeImage = 1,
    kGLArticlePostTypeVideo = 2,
};
...
// 画像添付
[[NCSDKManager getSharedInstance] presentArticlePostViewControllerWithType:kGLArticlePostTypeImage filePath:@""];
// 動画添付
[[NCSDKManager getSharedInstance] presentArticlePostViewControllerWithType: kGLArticlePostTypeVideo filePath:@""];

dismissMainViewController: メソッド

PLUGを終了します。

(void)dismissMainViewController;

次の例は、dismissMainViewController: メソッドを実装した例です。

/*
PLUG終了
 */
[[NCSDKManager getSharedInstance] dismissMainViewController];

横画面モード、縦画面モード

PLUGは横画面モードと縦画面モードのどちらも対応しています。

次の例はPLUGを縦画面モードで実行した例です。

// 既定値はYES
// 横画面モード
[[NCSDKManager getSharedInstance] setOrientationIsLandscape:YES];

次の例はPLUGを横画面モードで実行した例です。


// 縦画面モード
[[NCSDKManager getSharedInstance] setOrientationIsLandscape:NO];

透明度調節

PLUG画面の左上の透明度調節スライダーで透明度を調節すると、ゲームとカフェを同時に使用できます。

透明度調節スライダーの使用の有無は、disableTransparentSlider: メソッドで設定します。

(void)disableTransparentSlider:(BOOL)disable;

disableパラメータの値をYESで設定すると、透明度調節スライダーを使用できます(既定値:YES)。

次の例は、透明度調節スライダーを使用するように実装した例です。

/*
  透明度調節スライダーの使用の有無を設定します。
 */
// 透明度機能の使用
[[NCSDKManager getSharedInstance] disableTransparentSlider:YES];

次の例は、透明度調節スライダーを使用しないように実装した例です。

// 透明度機能の削除
[[NCSDKManager getSharedInstance] disableTransparentSlider:NO];

ウィジェット

ウィジェットは、PLUGの折り畳みボタンをタップすると自動で画面に表示される要素です。ウィジェットでゲーム内のどこでもPLUGを利用できます。

ウィジェットの表示

PLUGの折り畳みボタンをタップした時に、ウィジェットを表示するかは、showWidgetWhenUnloadSDKプロパティで設定します。

@property (nonatomic, assign) BOOL showWidgetWhenUnloadSDK;

showWidgetWhenUnloadSDKプロパティの値をYESに設定すると、PLUGウィンドウを折り畳む時にウィジェットが表示されます(既定値:YES)。

次の例はウィジェットが表示されるように実装した例です。

/**
 * PLUGウィンドウを折り畳む時に、ウィジェットを表示するか決定します。
 */

[NCSDKManager getSharedInstance].showWidgetWhenUnloadSDK = YES;

ウィジェット実行

ウィジェットを実行する場合は、startWidget: メソッドを使用します。

(void)startWidget;

次の例は、ウィジェットを実行した例です。

  /**
   * ウィジェットを実行します。
   */
[[NCSDKManager getSharedInstance] startWidget];

ウィジェットを閉じる

ウィジェットを閉じる場合は、stopWidget: メソッドを使用します。

(void)stopWidget;

次の例は、ウィジェットを強制的に閉じる例です

  /**
   * ウィジェットを閉じます。
   */
[[NCSDKManager getSharedInstance] stopWidget];

ウィジェットの基本位置の設定

ウィジェットを最初に実行する時は、画面左の中央に表示されます。ウィジェットを最初に実行する時に表示される基本位置を設定する場合は、setWidgetStartPosition: メソッドと、andY: メソッドを使用します。

ただし、ユーザーがウィジェットを移動した後、ウィジェットが再び実行される時は、ユーザーが移動した最後の位置にウィジェットが表示されます。

- (void)setWidgetStartPosition:(BOOL)isLeft andY:(NSInteger)y;

次の例は、ウィジェットの基本位置を画面右側、上から20%の位置に設定した例です

   /**
   * isLeft:YESであれば左側に、NOであれば右側に表示されます。
   * y:縦の位置を%で指定できます。
   */

[[NCSDKManager getSharedInstance] setWidgetStartPosition:NO andY:20];

画面キャプチャ

ウィジェットの画面キャプチャボタンをタップすると、ゲーム画面をキャプチャできます。

画面キャプチャボタン

画面キャプチャボタンをタップした時に、画面をキャプチャする機能はncSDKWidgetPostArticleWithImageメソッドで実装します。

(void)ncSDKWidgetPostArticleWithImage;

次の例は、ユーザーがウィジェットで画面キャプチャボタンをタップすると、ncSDKWidgetPostArticleWithImageメソッドを呼び出すようにDelegateを登録した例です。

...
[[NCSDKManager getSharedInstance] setNcSDKDelegate:self];
...
- (void)ncSDKWidgetPostArticleWithImage {
    NSLog(@"画面キャプチャ要請 ");
}

画面キャプチャの使用設定

useWidgetScreenShotプロパティで、画面キャプチャ機能の使用の有無を設定します。

@property (nonatomic, assign) BOOL useWidgetScreenShot;

useWidgetScreenShotプロパティの値をYESに設定すると、ウィジェットに画面キャプチャボタンが表示されます(既定値:YES)。

  /**
   * 画面キャプチャ機能を使用するか決定します
   */
[NCSDKManager getSharedInstance].useWidgetScreenShot = YES;

動画録画

ウィジェットの動画録画ボタンをタップすると、ゲーム画面を録画できます。

動画録画の使用設定

useWidgetVideoRecordプロパティで、動画録画機能の使用の有無を設定します。

@property (nonatomic, assign) BOOL useWidgetVideoRecord;

useWidgetVideoRecordプロパティの値をYESに設定すると、ウィジェットに動画録画ボタンが表示されます(既定値:NO)。

  /**
   * 動画録画機能を使用するか決定します。
   */
[NCSDKManager getSharedInstance].useWidgetVideoRecord = YES;

録画完了処理

動画録画が完了した時に、処理する作業はncSDKWidgetSuccessVideoRecordメソッドで実装します

(void)ncSDKWidgetSuccessVideoRecord;

次の例は、ユーザーがウィジェットで動画録画ボタンをタップし、動画録画が完了するとncSDKWidgetSuccessVideoRecordメソッドを呼び出すようにDelegateを登録した例です。

...
[[NCSDKManager getSharedInstance] setNcSDKDelegate:self];
...
- (void)ncSDKWidgetSuccessVideoRecord {
    NSLog(@"動画録画完了 ");
}

動画録画

動画録画ボタンをタップすると、ゲーム中にゲーム画面を録画できます。

  • 動画録画機能は、iOS 9.0以上のデバイスから対応しています。

ウィジェットの動画録画機能の使用

ウィジェットの動画録画ボタンをタップすると、ゲーム中にゲーム画面を録画できます。

動画録画の使用設定useWidgetVideoRecordプロパティで、動画録画機能の使用の有無を設定します。

@property (nonatomic, assign) BOOL useWidgetVideoRecord;

useWidgetVideoRecordプロパティの値をYESに設定すると、ウィジェットに動画録画ボタンが表示されます(既定値:NO)。

iOS 9.0未満のデバイスでは、useWidgetVideoRecordプロパティの値をYESに設定しても、ウィジェットに動画録画ボタンが表示されません。

次の例は、動画録画機能を使用するように実装した例です。

  /**
   * 動画録画機能を使用するか決定します
   */
[NCSDKManager getSharedInstance].useWidgetVideoRecord = YES;

録画完了Delegate

動画録画が完了した時に、処理する作業はncSDKWidgetSuccessVideoRecordメソッドで実装します。

(void)ncSDKWidgetSuccessVideoRecord;

次の例は、ユーザーがウィジェットで動画録画ボタンをタップし、動画録画が完了するとncSDKWidgetSuccessVideoRecordメソッドを呼び出すようにDelegateを登録した例です。

...
[[NCSDKManager getSharedInstance] setNcSDKDelegate:self];
...
- (void)ncSDKWidgetSuccessVideoRecord {
    NSLog(@"動画録画完了");
}

ゲームの動画録画機能の使用

ゲーム開発会社で動画録画ボタンを実装し、ゲーム画面を録画できます。

  • • 動画録画の開始と終了を直接呼び出せるコードは、NCSDKRecordManager.hファイルにあります。

動画録画の開始と終了

動画録画を開始する場合は、startRecordメソッドを使用します。

/*
  動画の録画を始めます。 
*/
[[NCSDKRecordManager getSharedInstance] startRecord];

動画録画を終了する場合は、stopRecordメソッドを使用します。

/*
 動画の録画を終わります。
 */

[[NCSDKRecordManager getSharedInstance] stopRecord];

動画録画Delegate

ゲーム開発会社のボタンで、動画を録画する時に発生するイベントを処理するコールバックDelegateは次のとおりです。

#pragma mark – NCSDKRecordManagerDelegate

// 動画録画の開始
- (void)ncSDKRecordStart {
   NSLog(@"start recording.");
}

// 動画録画中にエラー発生
- (void)ncSDKRecordError:(NSString *)errorMsg {
   NSLog(@"ERROR : %@",errorMsg);
}

// 動画録画の終了
- (void)ncSDKRecordFinish {
   NSLog(@"Video recording ended");
}

// 録画した動画のプレビューウィンドウを終了
- (void)ncSDKRecordFinishWithPreview {
   NSLog(@"PreviewController is close.");
}

App Scheme 処理

ゲームでPLUGのホーム画面に表示されるバナー画像をタップすると、App Schemeに移動してゲーム機能を実行させることができます。

App Schemeに移動するバナー画像は、カフェの管理メニューで登録します。

App Schemeに移動するバナー画像をタップするとopenURL: メソッドを実行し、App Schemeを処理するように次の例のようにAppDelegateを設定します。

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
// 管理メニューで登録したApp SchemeをAppDelegateで処理します。
//ex : gLinkSample://test
    if ([[url scheme] isEqualToString:@"gLinkSample"]) {
        if ([[url host] isEqualToString:@"test"]) {
            //todo
        }
    }
}

次の例は、App Schemeを処理するようにリスナーを実装した例です。

#pragma mark - NCSDKManagerDeleagte

- (void)ncSDKAppSchemeBanner:(NSString *)appScheme {
     NSLog(@"App Scheme : %@", appScheme);
}

コールバックDelegate

コールバックDelegateを設定し、PLUGで発生するイベントを処理します。

コールバックDelegate登録

コールバックDelegateを処理するビューコントローラーを、NCSDKManagerクラスに登録します。

@interface ViewController () <NCSDKManagerDelegate>
...
[[NCSDKManager getSharedInstance] setNcSDKDelegate:self];
...

コールバックDelegate実装

PLUGでイベントが発生した時に、コールバックDelegateを通して呼び出すメソッドは次のとおりです。

#pragma mark – NCSDKManagerDelegate
// PLUG実行
- (void)ncSDKViewDidLoad {
    NSLog(@"PLUG実行 ");
}
// PLUG終了
- (void)ncSDKViewDidUnLoad {
    NSLog(@"PLUG終了 ");
}
// カフェ登録
- (void)ncSDKJoinedCafeMember {
    NSLog(@"カフェ登録 ");
}
// カフェ登録完了
- (void)ncSDKPostedArticleAtMenu:(NSInteger)menuId
                attachImageCount:(NSInteger)imageCount
                attachVideoCount:(NSInteger)videoCount {
    NSLog(@"投稿作成完了、掲示板ID [%@]", @(menuId));
}
// コメント登録
- (void)ncSDKPostedCommentAtArticle:(NSInteger)articleId {
    NSLog(@"コメント作成完了、投稿ID [%@]", @(articleId));
}
// スクリーンショット
- (void)ncSDKRequestScreenShot {
    NSLog(@"スクリーンショット");    
}
// 投票完了
- (void)ncSDKDidVoteAtArticle:(NSInteger)articleId {
    NSLog(@"投票完了、投稿ID [%@]", @(articleId));
}

// ウィジェットの画面キャプチャボタンタッチ
- (void)ncSDKWidgetPostArticleWithImage {
    NSLog(@"ウィジェットの画面キャプチャ");
}
// 録画完了
- (void)ncSDKWidgetSuccessVideoRecord {
    NSLog(@"ウィジェットの動画録画完了 ");
}

ゲームIDの連携

ユーザーのゲームIDとCafe IDを連携して管理できます。連携したゲームIDとCafe IDのリストは、カフェの管理メニューから確認できます。

ゲームIDをCafe IDと連携する場合は、syncGameUserId: メソッドを使用します。

(void)syncGameUserId:(NSString *)gameUserId;

次の例は、ゲームIDとCafe IDを連携する例です。

/*
 NAVER IDとゲームユーザーIDを連携します。 
 */
[[NCSDKManager getSharedInstance] syncGameUserId:@"ユーザーゲームID "];

テーマカラー変更

PLUGのテーマカラーを変更できます。

テーマカラーを変更する場合は、setThemeColor: メソッドとandTabBackgroundColor: メソッドを使用します。

/** 
* themeColorCSSString パラメータの既定値は「#00c73c」です。
* backgroundCSSString パラメータの既定値は「#44484e」です。
* backgroundCSSString パラメータは既定値を使用することを推奨します。
**/

- (void)setThemeColor:(NSString *)themeColorCSSString;
- (void)setThemeColor:(NSString *)themeColorCSSString andTabBackgroundColor:(NSString *)backgroundCSSString;
  • themeColorCSString: • テーマで基本的に使用する色(既定値:#00c73c)

  • backgroundCSSString: • タブメニューの背景色(既定値:#44484e)既定値を使用することを推奨します。

注意 CSSカラー値にアルファ値を入れてはいけません

  • 正しい例: #ff9800

  • 間違った例: #e2ff9800

次の例は、テーマカラーを変更する例です。

[[NCSDKManager getSharedInstance] setThemeColor:@"#00c73c"];
[[NCSDKManager getSharedInstance] setThemeColor:@"#00c73c" andTabBackgroundColor:@"#44484E"];

リソース画像変更

NAVER CafeのPLUGライブラリに含まれたリソース画像は、次のように変更できます。

  1. NaverCafeSDK.bundleパッケージにある画像をお好きな画像に変更します。

  2. 修正したパッケージをNAVER CafeのPLUGライブラリに適用し、プロジェクトをビルドします。

注意 画像を変更する時に、画像のサイズは既存の画像と同じ物を使用してください。

Last updated