SNS 웹뷰를 출력한다.
Hive 웹뷰 프로필 변경
카메라 및 사진첩 기능 설정
BuildTarget=24 인 Hive 적용 앱을 Android N(Nougat) 이상의 기기에서 사용할 경우 Hive 웹뷰 프로필 페이지의 카메라 및 사진첩 기능이 정상적으로 작동하려면 아래 설정을 추가해야 한다.
- AndroidManifest.xml 파일에 관련 코드를 추가한다.
12345678910111213< application >...< providerandroid:name="android.support.v4.content.FileProvider"android:authorities="<span style="color: red;">com.com2us.misample.normal.freefull.google.global.android.common</span>.provider"android:exported="false"android:grantUriPermissions="true" >< meta-dataandroid:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/provider_paths"/ >< / provider >...< / application > - Hive SDK를 적용 중인 프로젝트에 /res/xml 경로를 생성하고, xml 폴더에 provider_paths.xml 파일을 생성한다.
12345< !-- provider_paths.xml -- ><?xml version="1.0" encoding="utf-8"?><paths xmlns:android="http://schemas.android.com/apk/res/android"><external-path name="external_files" path="."/></paths>
C2SModuleSns_Show
SNS WebView를 호출한다.
Request
argument name | type | desc | platform | 비고 |
---|---|---|---|---|
type | string |
|
all | |
type == “message”일 때 | ||||
uid | string | UID 대상과의 1:1 메시지 페이지 N/A: 유저의 메시지 페이지 |
all | 1.8.0+ |
type == “chatbot”일 때 | ||||
additionalInfo | string | 챗봇 페이지 노출 시 함께 전달할 데이터"{ \"init_path\":\"hive_sdk_api\" }" 로 고정하며 추가 전달할 값이 필요한 경우 컴투스플랫폼 선행개발팀과 협의 |
all | 1.18.1+ |
Response
SNS 웹뷰 호출 성공 여부
Hive 웹뷰 프로필 페이지 내 설정 메뉴를 통해 회원 탈퇴를 진행하여 완료한 경우 Response의 argument 데이터로 error_code=1801 정보가 전달. error_code=1801> 확인 후 로그아웃 API(type=userExit
) 호출 필요. (Hive SDK v1.19.5.2 또는 Hive SDK v1.20.0 이상 적용 시)
argument name | type | desc | platform | 비고 |
---|---|---|---|---|
Hive 웹뷰 닫을 시 | ||||
argumet 없음 | ||||
Hive 웹뷰 내 프로필 페이지에서 회원 탈퇴 시 | ||||
error_code | int | 1801 | all | 1.19.5.2, 1.20.0+ |
샘플 코드
API Reference: C2SModule.Sns.Show
- public static bool C2SModule.Sns.Show(C2SModule.Parameter arg, out C2SModule.Error error) ;
- C2SModule.Sns.Show(C2SModule.Parameter arg, out C2SModule.Error error, C2SModule.CompletionHandler completionHandler);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
C2SModule.Parameter arg = new C2SModule.Parameter (); arg ["type"] = "inquiry"; // 1:1 문의 기능 호출 C2SModule.Error error; if(!C2SModule.Sns.Show (arg, out error)) { // Error 시 처리 } /* 1.8.0 추가 */ /* 받은 메시지함 바로가기 */ C2SModule.Parameter arg = new C2SModule.Parameter(); arg["type"] = "message"; C2SModule.Error error; if(!C2SModule.Sns.Show(arg, out error, delegate(Parameter userArg, Error userError) { // })) /* 특정 사용자에게 받은 메시지 창으로 바로가기 */ C2SModule.Parameter arg = new C2SModule.Parameter(); arg["type"] = "message"; arg["uid"] = uid; C2SModule.Error error; if(!C2SModule.Sns.Show(arg, out error, delegate(Parameter userArg, Error userError) { // })) /* 1.18.1 추가 */ /* 챗봇으로 문의하기 */ C2SModule.Parameter arg = new C2SModule.Parameter (); arg ["type"] = "chatbot"; // 챗봇 문의 기능 호출 arg ["additionalInfo"] = "{ \"init_path\":\"hive_sdk_api\" }"; C2SModule.Error error; if(!C2SModule.Sns.Show (arg, out error)) { // Error 시 처리 } |
API Reference: HiveSDKUESns_Show
- void HiveSDKUESns_Show(FString fstrJson);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
TSharedPtr arg = MakeShareable(new FJsonObject); arg->SetStringField(TEXT("type"), TEXT("inquiry")); FString OutputString; TSharedRef< TJsonWriter<> > Writer = TJsonWriterFactory<>::Create(&OutputString); FJsonSerializer::Serialize(arg.ToSharedRef(), Writer); FHiveSDKModule::Get().HiveSDKUESns_Show(OutputString); /* 1.8.0 추가 */ /* 받은 메시지함 바로가기 */ TSharedPtr arg = MakeShareable(new FJsonObject); arg->SetStringField(TEXT("type"), TEXT("message")); FString OutputString; TSharedRef< TJsonWriter<> > Writer = TJsonWriterFactory<>::Create(&OutputString); FJsonSerializer::Serialize(arg.ToSharedRef(), Writer); FHiveSDKModule::Get().HiveSDKUESns_Show(OutputString); /* 특정 사용자에게 받은 메시지 창으로 바로가기 */ TSharedPtr arg = MakeShareable(new FJsonObject); arg->SetStringField(TEXT("type"), TEXT("message")); arg->SetStringField(TEXT("uid"), TEXT("97211900")); FString OutputString; TSharedRef< TJsonWriter<> > Writer = TJsonWriterFactory<>::Create(&OutputString); FJsonSerializer::Serialize(arg.ToSharedRef(), Writer); FHiveSDKModule::Get().HiveSDKUESns_Show(OutputString);arg["type"] = "message"; arg["uid"] = uid; C2SModule.Error error; if(!C2SModule.Sns.Show(arg, out error, delegate(Parameter userArg, Error userError) { // })) |
API Reference: C2SModuleSns_Show
- bool C2SModuleSns_Show(const char* pstrJson, C2SModule_Cocos2dx::C2SModuleError* pkError,
C2SModule_Cocos2dx::C2SModuleCompletionHandler* completionHandler = NULL);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
Json::Value arg; arg["type"] = "inquiry"; Json::StyledWriter writer; std::string strJSON = writer.write(arg); C2SModule_Cocos2dx::C2SModuleError error; if( ::C2SModuleSns_Show( strJSON.c_str(), &error ) == false ) { CCLog( "====>>>> Sns_Show error (%s)", error.get()->GetMessage() ); } /* 1.8.0 추가 */ /* 받은 메시지함 바로가기 */ Json::Value arg; arg["type"] = "message"; Json::StyledWriter writer; std::string strJSON = writer.write(arg); C2SModule_Cocos2dx::C2SModuleError error; if( ::C2SModuleSns_Show( strJSON.c_str(), &error ) == false ) { CCLog( "====>>>> Sns Show error (%s)", error.get()->GetMessage() ); } /* 특정 사용자에게 받은 메시지 창으로 바로가기 */ Json::Value arg; arg["type"] = "message"; arg["uid"] = uid; Json::StyledWriter writer; std::string strJSON = writer.write(arg); C2SModule_Cocos2dx::C2SModuleError error; if( false == ::C2SModuleSns_Show(strJSON.c_str(), &error) ) { CCLog( "====>>>> Sns Show error (%s)", error.get()->GetMessage() ); } /* 1.18.1 추가 */ /* 챗봇 문의하기 */ Json::Value arg; arg["type"] = "chatbot"; arg["additionalInfo"] = "{ \"init_path\":\"hive_sdk_api\" }"; Json::StyledWriter writer; std::string strJSON = writer.write(arg); C2SModule_Cocos2dx::C2SModuleError error; if( ::C2SModuleSns_Show( strJSON.c_str(), &error ) == false ) { CCLog( "====>>>> Sns_Show error (%s)", error.get()->GetMessage() ); } |
API Reference: C2SModuleSns Show
- +(BOOL)Show:(id)arg error:(NSError**)error completionHandler:(void(^)(NSDictionary *, NSError*))
completionHandler;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
NSError* error; [C2SModuleSns Show:@{@"type":@"inquiry"} error:&error completionHandler:^(NSDictionary* resultArg, NSError* resultError){ if (error == nil) { //succeed } }]; /* 1.8.0 추가 */ /* 받은 메시지함 바로가기 */ NSError* error; [C2SModuleSns Show:@{@"type":@"message"} error:&error completionHandler:^(NSDictionary* resultArg, NSError* resultError){ if (error == nil) { //succeed } }]; /* 특정 사용자에게 받은 메시지 창으로 바로가기 */ NSError* error; [C2SModuleSns Show:@{@"type":@"message", @"uid":uid} error:&error completionHandler:^(NSDictionary* resultArg, NSError* resultError){ if (error == nil) { //succeed } }]; /* 1.18.1 추가*/ /* 챗봇으로 문의하기 */ NSError* error; [C2SModuleSns Show:@{@"type":@"chatbot", @"additionalInfo":@"{\"init_path\":\"hive_sdk_api\"}"} error:&error completionHandler:^(NSDictionary* resultArg, NSError* resultError){ if (error == nil) { //succeed } }]; |
챗봇 설정하기
Hive SDK는 유저의 편의를 고려해 챗봇 UI를 세로 고정형으로 노출한다. iOS에서 해당 기능을 정상 동작하려면 게임 엔진의 AppDelegate 클래스의 화면 회전 관련 메서드 application(_:supportedInterfaceOrientationsFor:)
를 구현해야 한다. 이 메서드의 return은 게임에 적용시킬 UIInterfaceOrientationMask 값으로 반환한다. 가로 전용 게임일 경우 landscape, 세로 전용 게임일 경우 portrait, 가로와 세로 모두 지원하는 게임일 경우 landscape와 portrait를 모두 반환한다.
1 2 3 4 5 |
<!-- chatbot activity --> <activity android:name="com.com2us.peppermint.PeppermintChatbotActivity" android:configChanges="orientation|screenSize|keyboard|keyboardHidden" android:screenOrientation="behind" /> |
1 2 3 4 5 6 7 |
// AppDelegate.m #import "C2SAppDelegate.h" - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { return [C2SAppDelegate application:application didFinishLaunchingWithOptions:launchOptions]; } |
iPad에서도 챗봇 화면을 세로 고정형으로 노출하고 싶다면 Xcode에서 아래 설정을 추가로 적용하고 빌드한다.