PLUG iOS 应用指南

应用指南

下载最新版本

如果要使用PLUG SDK,须按照以下步骤在XCode中设置开发环境。

  1. 在Build Settings的Other Linker Flags中添加-ObjC选项。

  2. 将包含于所下载示例项目中的如下库添加至项目。

    • SDWebImage

    • FLAnimatedImage

    • 使用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)和客户端Secret(ClientSecret)。

  • 在NAVER Cafe创建Cafe后获得的Cafe ID。

  • 在“使用NAVER ID登录开发人员中心”注册应用程序时输入的URL Scheme。

  • PLUG的parentViewController

  • 通道代码(仅使用韩语通道时,设置为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: 创建社区后获得的Cummunity No

  • loungeNo: 创建lounge后获得的Lounge No。

  • PLUG的parentViewController

    [[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];
}

支持国外社区和韩国国内NAVERCafe的PLUG初始化

对于同时支持国外社区和韩国国内NAVER Cafe的PLUG,需要同时完成支持韩国国内NAVER Cafe的初始化和支持国外社区的初始化。

Files and Folders

Dependent Libraries

  • 如果要使用PLUG SDK,需将下面的库添加至项目并一起导入。这些库包含于示例项目中。使用NAVER ID登录(4.0.7版本)

  • AFNetworking(3.1.0 版本)

    • 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界面左上方的透明度调节滑块调节透明度,可以同时使用游戏和Cafe服务。

是否使用透明度调节滑块利用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方法的委托注册示例。

...
[[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方法的委托注册示例。

...
[[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;

录制结束委托

视频录制结束后,需要处理的内容通过ncSDKWidgetSuccessVideoRecord方法来实现。

(void)ncSDKWidgetSuccessVideoRecord;

下面是确保用户通过点击微件界面上视频录制按钮来结束视频录制时调用ncSDKWidgetSuccessVideoRecord方法的委托注册示例。

...
[[NCSDKManager getSharedInstance] setNcSDKDelegate:self];
...
- (void)ncSDKWidgetSuccessVideoRecord {
    NSLog(@"视频录制结束");
}

使用游戏视频录制功能

游戏开发商可通过设置视频录制按钮支持游戏画面的录制。

  • 可用来直接调用视频录制开始和结束的代码位于NCSDKRecordManager.h文件内。

视频录制开始与结束

如果要开始录制视频,使用startRecord方法。

/*
 开始录制视频
 */
[[NCSDKRecordManager getSharedInstance] startRecord];

如果要结束录制视频,使用stopRecord方法。

/*
 结束视频录制
 */

[[NCSDKRecordManager getSharedInstance] stopRecord];

视频录制委托

利用游戏开发商的按钮录制视频时所发生的事件,通过如下回调委托进行处理。

#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的横幅图片在Cafe管理菜单下添加。

点击前往App Scheme的横幅图片,即可运行openURL:方法来处理App Scheme的功能,按照如下示例设置AppDelegate。

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
//利用AppDelegate处理添加至管理菜单的App Scheme
//ex : gLinkSample://test
    if ([[url scheme] isEqualToString:@"gLinkSample"]) {
        if ([[url host] isEqualToString:@"test"]) {
            //todo
        }
    }
}

下面是实现App Scheme处理的监听器示例。

使用监听器的App Scheme处理支持PLUG 2.4.0以上版本。

#pragma mark - NCSDKManagerDeleagte

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

回调委托

PLUG中发生的事件通过设置回调委托来处理。

注册回调委托

将处理回调委托的ViewController注册至NCSDKManager类。

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

实现回调委托

PLUG发生事件时,通过回调委托调用的方法如下。

#pragma mark – NCSDKManagerDelegate
// 运行PLUG
- (void)ncSDKViewDidLoad {
    NSLog(@"运行PLUG");
}
// 退出PLUG
- (void)ncSDKViewDidUnLoad {
    NSLog(@"退出PLUG");
}
// 注册Cafe
- (void)ncSDKJoinedCafeMember {
    NSLog(@"Cafe注册结束");
}
// 发帖
- (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绑定

PLUG支持绑定用户的游戏ID和CafeID来进行管理。绑定后的游戏ID和Cafe ID目录可在Cafe的管理菜单下确认。

如果要绑定游戏ID和CafeID,使用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颜色值内不得输入alpha值。

  • 正确示例:#ff9800

  • 错误示例:#e2ff9800

下面是更改主题颜色的示例。

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

资源图片变更

包含于NAVER Cafe PLUG库中的资源图片可按照如下方式进行更改。

  1. 将NaverCafeSDK.bundle压缩包中的图片更改为目标图片。

  2. 将修改后的压缩包应用至NAVER Cafe PLUG库中后导入项目。

注意 更改图片时,图片大小须和原图片大小一致。

Last updated