개요
내장 브라우저는 MSDK에서 제공하는, 게임 내 브라우저 웹 페이지의 Webview 구성 요소 중 하나로, 게임은 게임 내에서 마케팅 활동 페이지, 포럼, 매뉴얼 등과 같은 Web 페이지를 열 수 있습니다. 이 Webview 내에서는 QQ 및 위챗 공유 기능을 제공하며, 페이지 상하 스크롤 시에 검색창 숨기기, 도구창 효과(기본은 활성화로 설정되어 있으며 닫을 수 있음)를 지원하며, Useragent 내에 MSDK 마크(형식: MSDK/버전번호)를 추가합니다. 디스플레이 효과
액세스 내비게이션
1 사전 요구 사항
1) 이미 MSDK 액세스 설정 모듈 설명에 따라 액세스 설정을 완료하셨습니다.
2) 이미 "MSDKMarketing.framework” 및 "WGPlatformResources.bundle"을 읽어들였습니다.
2 Demo 예시를 참고하십시오.
콜백 설정은 MSDKDemo/MyObserver.mm 파일의 OnWebviewNotify 메소드를 참조하십시오.
브라우저 열기는 MSDKDemo/LoginSucceedVC.mm의 openBrowser 메소드를 참조하십시오.
슬라이딩해서 특성 숨기기
MSDK2.14.0 버전부터 각 게임은 자체적으로 내장 브라우저 내비게이션 창의 슬라이딩해 숨기거나 여는 전환 기능, 가로 화면 및 세로 화면을 별도로 설정할 수 있습니다. 기본 값은 모두 슬라이딩 숨기기가 꺼져 있는 상태이며, plist 내에서 Boolean의 스위치처럼 열고 닫도록 설정할 수 있습니다.
MSDK_Webview_Portrait_NavBar_Hideable //브라우저 세로 화면 시에 탐색창슬라이딩 감추기(YES의 경우 슬라이딩 감추기 가능) 여부, MSDK_Webview_Landscape_NavBar_Hideable //브라우저 가로 화면 시에, 탐색창 슬라이딩 감추기(YES의 경우 슬라이딩 감추기 가능) 가능 여부
세로 화면에서는 숨길 수 없고 가로 화면에서는 숨길 수 있는 경우 예시:
(./res/webview_hideable.png)
브라우저 열기
MSDK는 아래 두 가지 방식의 내장 브라우저 열기 기능을 제공합니다.
1. 일반 방식 브라우저 열기
1) 기능 설명
내장 브라우저를 열면, 브라우저 방향이 게임 인터페이스 방향과 같이 시스템에 따라 자동으로 회전합니다.
2) 인터페이스 선언
void WGOpenUrl(unsigned char * openUrl);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
openUrl | unsigned char * | 열려고 하는 Url에 프로토콜 접두사(예: https://)를 입력해야 합니다. |
4) 반환값
없음
5) 예시 코드
WGPlatform* plat = WGPlatform::GetInstance();
plat->WGOpenUrl((unsigned char*)"https://www.qq.com");
6) 특수 설명
-
브라우저 모듈인 xib를 통해 인터페이스를 구축하며, 이 xib는 WGPlatformResources.bundle/ 디렉토리에 위치시키며, xib가 사용하는 png 등의 리소스 파일은 WGPlatformResources.bundle/WebViewResources 디렉토리에 위치시킵니다. iOS7.0과 호환해야 하므로, Xcode5.0 이상 버전에서만 편집 가능합니다.
-
모바일QQ 공유 기능은 URL 길이를 512B 이내로 제한하므로 이를 초과하는 링크는 단축됩니다.
-
MSDK2.16.0 버전부터 열린 내장 브라우저의 URL은 Encode 인코딩할 필요가 없으며, MSDK 내부에서 자체적으로 컴파일링 후에 다시 열 수 있습니다. 페이지는 URL 내 Get 파라미터 MSDK 버전 version 필드에 따라 디코딩 필요성을 판단하며, 또한 Useragent 내 MSDK 표식(형식: MSDK/버전) 내 버전에 따라 판단할 수도 있습니다. 주의: 2.18.0i 버전부터 WGOpenUrl 인터페이스는 기본적으로 urlencode 처리를 하지 않으며, 작업에서 필요로 하는 경우, plist 내 MSDK_WGOPENURL_URL_ENCODE를 YES로 설정한 키 값을 통해 urlencode를 열 수 있습니다.
7) 용어 해석
없음
2. 화면 방향을 지정해 브라우저 열기
1) 기능 설명
게임에서 지정된 화면 방향으로 내장 브라우저를 열 수 있으며, 2.15.0i에서 2.18.0i(2.15.0i 및 2.18.0i 포함) 버전은 지정된 화면 방향을 지원하지 않습니다. 3.0.8i 이후 버전은 화면 방향 지정 기능이 지원됩니다.
2) 인터페이스 선언
void WGOpenUrl(unsigned char * openUrl, eMSDK_SCREENDIR screenDir);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
openUrl | unsigned char * | 열려고 하는 Url에서, urlEncode에 주의하십시오. |
screendir | eMSDK_SCREENDIR 열거 | 브라우저 열기 화면 방향 |
4) 반환값
없음
5) 예시 코드
WGPlatform* plat = WGPlatform::GetInstance();
plat->WGOpenUrl((unsigned char*)"https://www.qq.com", eMSDK_SCREENDIR_LANDSCAPE);
6) 특수 설명
-
브라우저 모듈인 xib를 통해 인터페이스를 구축하며, 이 xib는 WGPlatformResources.bundle/ 디렉토리에 위치시키며, xib가 사용하는 png 등의 리소스 파일은 WGPlatformResources.bundle/WebViewResources 디렉토리에 위치시킵니다. iOS7.0과 호환해야 하므로, Xcode5.0 이상 버전에서만 편집 가능합니다.
-
모바일QQ 공유 기능은 URL 길이를 512B 이내로 제한하므로 이를 초과하는 링크는 단축됩니다.
-
MSDK2.16.0 버전부터 열린 내장 브라우저의 URL은 Encode 인코딩할 필요가 없으며, MSDK 내부에서 자체적으로 컴파일링 후에 다시 열 수 있습니다. 페이지는 URL 내 Get 파라미터 MSDK 버전 version 필드에 따라 디코딩 필요성을 판단하며, 또한 Useragent 내 MSDK 표식(형식: MSDK/버전) 내 버전에 따라 판단할 수도 있습니다.
7) 용어 해석
없음
브라우저 이벤트 콜백
이벤트 콜백
1) 기능 설명
2.14.1i 이상의 버전은, 브라우저를 열고 닫을 때 이벤트 콜백을 수신할 수 있습니다. 팁: 웹페이지를 열었을 때 게임을 실행하고 싶을 경우, 게임 음악을 꺼주십시오. 웹페이지를 닫을 때 게임 음악이 복원되면서 이 콜백을 통해 웹페이지를 열고 닫을지 판단해 처리합니지다.
2) 인터페이스 선언
void OnWebviewNotify(WebviewRet& webviewRet)
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
webviewRet | WebviewRet 구조체 | 브라우저 이벤트 콜백 정보 |
4) 반환값
없음
5) 예시 코드
//내장 브라우저 콜백
void MyObserver::OnWebviewNotify(WebviewRet& webviewRet)
{
switch (webviewRet.flag)
{
case eFlag_Succ:
NSLog(@"\n내장 브라우저 열기 성공\n");
break;
case eFlag_WebviewClosed:
NSLog(@"\n내장 브라우저 닫기 성공\n");
break;
case eFlag_Webview_page_event:
NSLog([NSString stringWithFormat:@"recved js data:%@",[NSString stringWithUTF8String:webviewRet.msgData.c_str()]]);
break;
default:
break;
}
}
6) 특수 설명
브라우저 기동 화면에 비디오, 오디오 콘텐츠가 포함되어 있을 경우, 비디오 라이브 스트리밍은 브라우저 기동 및 종료 콜백 시에 게임 사운드를 활성화/비활성화해 주십시오. 그렇게 하지 않을 경우, 페이지의 사운드가 게임 사운드와 중복됩니다.
7) 용어 해석
없음
콜백 설정
1) 기능 설명
브라우저 이벤트 콜백 수신이 필요한 경우, 브라우저를 열기 전에 콜백 WGWebviewObserver를 설정할 필요가 있습니다.
2) 인터페이스 선언
void WGSetWebviewObserver(WGWebviewObserver* pWebviewObserver);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
pWebviewObserver | WGWebviewObserver 카테고리 | 브라우저 이벤트 콜백 유형 |
4) 반환값
없음
5) 예시 코드
MyObserver *ob = MyObserver::GetInstance();
WGPlatform::GetInstance()->WGSetWebviewObserver(ob);
WGPlatform::GetInstance()->WGOpenUrl((unsigned char*)[url UTF8String], eMSDK_SCREENDIR_LANDSCAPE);
6) 특수 설명
없음
7) 용어 해석
없음
투명적 전송 인수 증명 설명
1. 암호화 전송 로그인 상태
게임에 로그인할 경우, 내장 브라우저를 통해 웹페이지를 방문할 때 암호화된 로그인 상태 파라미터를 가지고 있을 수 있습니다. 구체적인 절차:
1) MSDK에서 이 파라미터를 암호화해 openUrl 파라미터에 추가한 후 페이지로 전송함
2) 페이지에서 암호 텍스트를 수신한 후 MSDK 백그라운드 디코딩 인터페이스를 호출해 일반 텍스트를 획득함
3) 일반 텍스트 내 Token을 통해 로그인 인증합니다.
2 암호화된 데이터
암호화될 로그인 상태 파라미터는 아래 표와 같습니다.
파라미터 명칭 | 파라미터 설명 |
---|---|
acctype | 계정 유형 획득 값은 qq 또는 wx |
appid | 게임 ID |
openid | 사용자 인증 후 플랫폼이 회신하는 유일한 표식입니다. |
access_token | 사용자 인증 토큰 |
pay_token | 모바일QQ 플랫폼 결제 토큰(MSDK2.15.0 버전에 새로 추가) |
platid | 터미널 유형에 따라 iOS는 획득 값 0으로 표시, android는 1로 표시 |
게임은 openUrl에서 파라미터를 get한 후, 자체 정의한 key와 value를 추가하지만, algorithm, version, timestamp, appid, openid, sig, encode, msdkEncodeParam은 msdk에서 key를 보류하며, 중복을 엄격히 금합니다.
파라미터 명칭 | 파라미터 설명 |
---|---|
timestamp | 청구 타임 스탬프 |
appid | 게임 ID |
algorithm | 암호화 알고리즘 표식은 값이 v1 또는 v2 |
msdkEncodeParam | 위 표 안의 로그인 상태 파라미터는 암호화 암호문 |
version | MSDK 버전번호, 예: 1.6.2a |
sig | 본인 서명 요청 |
encode | 인코딩 파라미터, 예: 2 |
openid | 사용자 인증 후 플랫폼이 반환하는 유일한 표식 |
예시 설명:
예를 들어, 브라우저가 URL:http://apps.game.qq.com/ams/gac/index.html을 풀업할 경우, 실제 패키지 캡처로 확인할 수 있는 방문 URL은 다음과 같습니다.
http://apps.game.qq.com/ams/gac/index.html?sig=***×tamp=**&appid=***&openid=***
&algorithm=v1&msdkEncodeParam=***&version=1.6.2i&encode=2
그중에서 msdkEncodeParam에서 전송하는 것은 실질적으로 아래 파라미터 암호화로 얻어진 암호문(url encode)입니다.
acctype=wx&appid=100732256&openid=ol7d0jsVhIm3BQwlNG9g2f4puyUg&access_token=OezXcEiiB
SKSxW0eoylIeCKi7qrm-vXrr62qKiSw2otDBgCzzKZZfeBOSv9fplYsIPD844sNIDeZgG3IyarYcGCNe8XuYK
HncialLBq0qj9-rVGhoQVkgSYJ8KXr9Rmh8IvdqK3zsXryo37sMJAa9Q&platid=0`
3. 자체 정의 전송 파라미터
게임은 자체적으로 url 뒤에 key-value 파라미터를 추가해 http://***.com?key1=value1&key2=value2와 같이 url의 보충 정보가 됩니다. MSDK 투명 전송 파라미터와 중복되지 않도록 주의해야 하며, 중복될 경우 디코딩에 실패할 수 있습니다.
등록 상태 디코딩
작업 페이지에서 상기 URL을 획득한 후, 패키지에서 MSDK 백그라운드 인코딩 인터페이스를 호출 요청합니다. 그 예시(MSDK 테스트 환경의 경우)는 다음과 같습니다.
http://msdktest.qq.com/comm/decrypv1/?sig=***×tamp=**&appid=***&openid=***&algorithm=v2&version=2.14.1i&encode=2
직접 제 1단계에서 획득한 msdkEncodeParam 내 암호문 값을 body 안에 넣고 Post 방식으로 전송합니다. key“msdkEncodeParam=”는 추가할 필요가 없다는 것을 유의해 주십시오.
Fiddler 디코딩 예시:
1 예를 들어, 브라우저가 URL:www.qq.com을 풀업할 경우, 실제 패키지 캡처로 확인할 수 있는 방문 URL은 다음과 같습니다.
http://www.qq.com?algorithm=v2&version=2.0.6a×tamp=1423538227203&appid=100703379&sig=427291da31b56b597
39be6da61d433ec&encode=2&msdkEncodeParam=BAD8B1625CB04523B06AAF6739ACB3CEA96F54393831AF5C6890E92EE61CF1A29F
493710592DD84B47D4217BA9FA9DAFB8025CEB27E45EC958689A794E8BD33CF2544CC5D00FCE03AEF7B23EE2BFCA4332F5D69547477
A3E93E44F3270F19664D5499CA2990BE5BA9E232036197B184F1411B76CF95537AC07E3D6A27F054AD3F26648B18554F9C1
2 Fiddler를 이용한 간단 테스트에서, 필요한 조합된 url은 다음과 같습니다.
http://msdktest.qq.com/comm/decrypv1/?sig=427291da31b56b59739be6da61d433ec×tamp=142353822720
3&appid=100703379&algorithm=v2&version=2.0.6a&encode=2
그중 Post body는 다음과 같습니다.
BAD8B1625CB04523B06AAF6739ACB3CEA96F54393831AF5C6890E92EE61CF1A29F493710592DD84B47D4217BA9FA9DAFB8
025CEB27E45EC958689A794E8BD33CF2544CC5D00FCE03AEF7B23EE2BFCA4332F5D69547477A3E93E44F3270F19664D549
9CA2990BE5BA9E232036197B184F1411B76CF95537AC07E3D6A27F054AD3F26648B18554F9C1
3 Fiddler 상에서의 테스트:
실행 결과는 다음과 같습니다.
acctype=qq&appid=100703379&openid=4FC5813635C21D7C0A64729E4E2D3041
&access_token=B85D2A1D7DB1B564CADE7116BF70AD0D&platid=1
주의사항:
- 정식 환경은 http://msdk.qq.com/comm/decrypv1/을 사용하십시오.
Url 암호화 토큰 추가
1) 기능 설명
내장 브라우저를 통해 연 첫 페이지의 Url 내에 MSDK 암호화를 거친 토큰을 추가할 수 있으며, 별도로 MSDK는 Url 암호화 토큰 추가 인터페이스를 제공합니다. 해당 인터페이스를 사용해 Url 입력 후 자동으로 MSDK 암호화를 거친 토큰을 추가함으로써, 게임에서 자체 정의 브라우저가 Url을 통해 안전하게 토큰을 획득하기를 원하는 사용자들의 니즈에 부응할 수 있습니다. 암호화 후 토큰의 디코딩은 등록 상태 디코딩을 참조하십시오.
2) 인터페이스 선언
const std::string WGPlatform::WGGetEncodeUrl(unsigned char * openUrl)
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
openUrl | unsigned char * | 암호화 파라미터를 추가해야 하는 url |
4) 반환값
std::string 유형의 추가한 적이 있는 암호화 파라미터 url.
5) 예시 코드
std::string encodeUrl = WGPlatform::GetInstance()->WGGetEncodeUrl((unsigned char*)"http://www.qq.com");
6) 특수 설명
없음
7) 용어 해석
없음
Javascript 액세스
MSDK 내장 브라우저가 Javascript 인터페이스 지원을 추가했으며, 현재 JS 인터페이스는 내장 브라우저 인터페이스 공유 및 닫기를 지원합니다. iOS 버전 MSDK는 상기 인터페이스 외에도 Safiri 내에서 만들어진 URL 인터페이스, 카메라 열기, 앨범 사진 인터페이스 기능을 제공합니다.
5 JS를 통해 iOS 사진 앨범, 카메라를 열어 사진 획득
1 Javascript 캡슐화 계층
// http 링크
<script type="text/javascript" src="https://img.ssl.msdk.qq.com/wiki/msdkJsAdapter.js"></script>
//아래 과거의 Http 링크는 애플 새로운 ATS 정책 이후에 방문할 수 없습니다. 위 Https 링크를 사용하십시오.
<script type="text/javascript" src="http://img.msdk.qq.com/wiki/msdkJsAdapter.js"></script>
// https 링크
<script type="text/javascript" src="https://img.ssl.msdk.qq.com/wiki/msdkJsAdapter.js"></script>
개발자는 코드를 MSDK JS 인터페이스를 호출할 필요가 있는 웹페이지에 복사해 MSDK의 JS 캡슐화 코드를 불러와야 하며, 동시에 이 웹페이지는 MSDK 내장 브라우저를 이용해 열어야 합니다. Android, iOS 플랫폼 모두 msdkShare(jsonData)
호출을 통해 공유를 완료하고 msdkCloseWebview()
호출로 브라우저를 닫습니다. iOS 버전 MSDK에서 제공하는 추가 인터페이스는 msdkiOSHandler 호출을 통해, iOS 섹션의 문서 및 JSDemo 예시http://img.msdk.qq.com/wiki/msdkjs.html를 참조할 수 있습니다.``
주의사항:
MSDK에서 제공하는 js 인터페이스는 MSDK 내장 브라우저에서만 호출할 수 있으며
, 그 밖의 브라우저 호출은 무효합니다.
1) 기능 개요
게임은 MSDK 내장 브라우저에서 JS 방식을 통해 msdkShare(jsonData)
인터페이스를 호출해 공유를 완료하고, 플랫폼을 지정할 필요가 없으며, 공유 카테고리와 파라미터는 json 형식의 문자열을 통해 지정하고, 공유 콜백은 MSDK 초기화 시에 등록한 네이티브 인터페이스OnShareNotify(ShareRet ret)
로 통합하여 콜백합니다. 현재 지원되는 모바일QQ/위챗 플랫폼 외에도 백엔드 공유의 모든 공유 인터페이스를 지원하며 구체적인 내용은 다음과 같습니다.
공유 유형 | 공유 위치 | JS 인터페이스 지원 여부 | 호출 인터페이스 |
---|---|---|---|
QQ 구조화 정보 공유 | 채팅/스페이스 | 지원 | WGSendToQQshare.htmlStructShare |
위챗 구조화 정보 공유 | 채팅 | 지원 | WGSendToWXshare.htmlStructShare |
QQ 음악 정보 공유 | 채팅/스페이스 | 지원 | WGSendToQQWithMusic#share.html](MusicShare# |
위챗 음악 정보 공유 | 채팅/모멘트 | 지원 | )WGSendToWXWithMusic#share.html](MusicShare# |
QQ 사진 공유 | 채팅/스페이스 | 지원 | )WGSendToQQWithPhoto#share.html](PhotoShare# |
위챗 사진 공유 | 채팅/모멘트 | 지원 | )WGSendToWXWithPhoto#share.html](PhotoShare# |
QQ 백엔드 공유 | QQ모바일 공공 계정 | 비지원 | )WGSendToQQGameFriend#share.html](BackendShare# |
위챗 백엔드 공유 | 채팅 | 비지원 | )WGSendToWXGameFriend#share.html](BackendShare# |
위챗 링크 정보 공유 | 채팅/모멘트 | 지원 | )WGSendToWeixinWithUrl#share.html](UrlShare# |
2) 인터페이스 선언
function msdkShare(jsonData)
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
jsonData | String | 상세 정보는 특수 설명 참조 |
4) 반환값
없음
5) 예시 코드
//데이터 공유는, Android iOS는 모두 인터페이스 msdkShare를 통해 공유함
var QQStructuredShare2zone='{"MsdkMethod":"WGSendToQQ","scene":"1","title":"QQ JS 구조화 공유",
"desc":"from js share","url":"http://www.baidu.com"}'
<p><input type="button" value="QQ结构化消息分享To空间" onclick="msdkShare(QQStructuredShare2zone)" /></p>
......
6) 특수 설명
파라미터 jsonData 형식은 {"MsdkMethod":"WGSendToQQ", "scene":"1","title":"QQ JS 구조화 공유", "desc":"from js share","url":"http://www.baidu.com"}'
그중 MsdkMethod
지정 공유 유형은, 대응 관계에 대해서 위 표를 참조하십시오. 뒷 부분의 여러 파라미터의 key는 대응하는 공유 문서 인터페이스 선언의 파라미터를 참조하시고, json의 value는 통합하여 문자열을 사용합니다. 공유 파라미터의 구체적인 의의는 표 안의 상응하는 네이티브 인터페이스 이름을 확인해 주십시오.
주의
해야 할 것은, JS 인터페이스 공유 사진 2.18.0i 이전 버전(음악 공유 제외) 디폴트가 현재 웹페이지 콘텐츠의 캡처 이미지(변경 불가)가 되며, 따라서 네이티브 인터페이스 선언의 파라미터 중에서 이미지에 관한 파라미터(예: imgUrl, imgUrlLen, thumbImageData 등)는 jsonData 내에 입력하지 않아도 됩니다.
2.18.0i 이후 버전에서는 게임 자체 정의 이미지:imgData 데이터베이스인 base64 데이터를 지원하며, 구체적인 Demo 예시는 [해당 웹페이지)http://wiki.dev.4g.qq.com/v2/msdkjs.html) 소스코드를 참조하십시오. 사용 시에는 캡슐화 계층을 주의해서 불러오십시오.
7) 용어 해석
없음
3 Javascript 내장 브라우저 닫기
1) 기능 설명
게임은 내장 브라우저 내에서 JS 방식을 통해 msdkCloseWebview()
인터페이스를 호출해 내장 브라우저를 닫을 수 있습니다.
2) 인터페이스 선언
function msdkCloseWebview()
3) 파라미터 설명
없음
4) 호출 예시
<p><input type="button" value="关闭MSDK内置浏览器" onclick="msdkCloseWebview()" /></p>
5) 특수 설명
구체적인 Demo 예시는 해당 웹페이지http://wiki.dev.4g.qq.com/v2/msdkjs.html 소스코드를 참조하시고, 사용 시에는 주의하여 캡슐화 계층webview.htmlJSSDK을 호출하십시오.#
6) 용어 해석
없음
4 JS를 통해 Safiri 내에서 지정 URL 열기
1) 기능 설명
게임은 내장 브라우저 내에서 JS 방식을 통해 Safiri 브라우저를 열고 지정 URL을 열 수 있으며, 파라미터는 고정 인터페이스 이름OpenURLInSafiri
및 가변 파라미터 data(곧, 열려고 하는 url 주소)를 전달해야 합니다.
2) 인터페이스 선언
var msdkiOSHandler(interfaceName, data, function(response))
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
interfaceName | String | iOS 네이티브 인터페이스 이름은, 고정 전달 'OpenURLInSafiri’ |
data | String | 열려고 하는 url 주소 |
4) 반환값
response, safiri 열기 성공 후 반환값이 없고, 열기 실패할 경우에는 실패 설명이 됩니다.
5) 예시 코드
<p><input type="button" value="Open URL In Safiri" onclick="demoOpenInSafiri()" /></p>
function demoOpenInSafiri() {
var data = 'http://v.qq.com/iframe/player.html?vid=y0140id0vna&tiny=0&auto=0'
log('JS sending message', data)
msdkiOSHandler('OpenURLInSafiri', data, function(response) {
log('JS got response', response);
});
}
6) 특수 설명
호출 방식은 해당 웹페이지http://wiki.dev.4g.qq.com/v2/msdkjs.html#
7) 용어 해석
없음
5 JS를 통해 iOS 사진 앨범, 카메라를 열어 사진 획득
1) 기능 설명
MSDK 내장 브라우저 내에서 iOS 네이티브 API를 호출하면 MSDK 내장 브라우저가 닫힐 수 있으므로, MSDK2.7.0 버전부터 게임은 내장 브라우저 안에서 JS 방식 열기를 통해 열고, iOS 사진 앨범, 카메라를 열어 사진을 획득할 수 있고, 파라미터는 고정 인터페이스 이름을 전달해야 합니다OpenImagePickerController
.
2) 인터페이스 선언
var msdkiOSHandler(interfaceName, data, function(response))
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
interfaceName | String | iOS 네이티브 인터페이스 이름은, 고정 전달 'OpenImagePickerController’ |
data | String | 무효 파라미터, 전달하지 않아도 됨 |
4) 반환값
response는, '{"message”:”xxx”,”base64String":“xxx”}'json 형식의 스트링. 그중 message 필드는 사진 획득 성공 여부를 나타내며, 값에는 'success’ 및 'user cancel'이 있습니다. base64String 필드는 사진의 Base64 인코딩 스트링이며, message가 'success'일 경우, 해당 필드에 값이 있고, message가 'user cancel'인 경우, 필드에 값이 없습니다.
5) 예시 코드
<p><input type="button" value="Open ImagePickerController" onclick="demoOpenImagePicker()" /></p>
function demoOpenImagePicker() {
var data = 'OpenImagePickerController'
log('JS sending message', data)
msdkiOSHandler('OpenImagePickerController', data, function(response) {
/*
response는 '{"message”:”xxx”,”base64String":“xxx”}’ 형식 문자열.
그중 message 필드는 사진 획득 성공 여부를 나타내며, 값에는 'success’ 및 'user cancel'이 있습니다.
base64String 필드는 사진의 Base64 인코딩 스트링이며, message가 'success'일 경우, 해당 필드에 값이 있고, message가 'user cancel'인 경우, 필드에 값이 없습니다.
*/
var obj = JSON.parse(response);
log('JS got response', obj["message"]);
});
}
6) 특수 설명
호출 방식은 해당 웹페이지http://wiki.dev.4g.qq.com/v2/msdkjs.html#
Xcode8 이후 버전을 사용해 패키지화한 작업은 info.plist 내에서 카메라NSCameraUsageDescription
, 앨범NSPhotoLibraryUsageDescription
사용을 선언해야 하며, 그렇게 하지 않을 경우, iOS10 기기 상에서 Crash가 발생할 수 있습니다. 선언 예시는 다음과 같습니다.
<key>NSCameraUsageDescription</key>
<string></string>
<key>NSPhotoLibraryUsageDescription</key>
<string></string>
7) 용어 해석
없음
6 JS를 통해 내장 브라우저를 전체 화면으로 확대
1) 기능 설명
JS 인터페이스를 통해 내장 브라우저를 전체 화면으로 확대
2) 인터페이스 선언
// 전체 화면 열기
var SetFullScreen='{"MsdkMethod":"WGSetFullScreen","isFullScreen":"true"}'
// 전체 화면 닫기
var SetFullScreen='{"MsdkMethod":"WGSetFullScreen","isFullScreen":"false"}'
function msdkCall(tag,data)
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
tag | String | 네이티브 인터페이스 이름은 'WGSetFullScreen'로 고정 |
data | String | 전체 화면의 json 데이터 여부 |
4) 반환값
없음
5) 예시 코드
// Android iOS는 모두 인터페이스 msdkShare를 통해 전체 화면 실현
var FullScreen='{"MsdkMethod":"WGSetFullScreen","isFullScreen":"true"}'
<p><input type="button" value="브라우저 전체 화면 설정" onclick="msdkCall('WGSetFullScreen',FullScreen)" /></p>
6) 특수 설명
없음
7) 명칭 해석
없음
내장형 브라우저 웹페이지 오픈
1) 기능 설명
게임창에서 내장형 브라우저 웹페이지를 오픈합니다.
2) 인터페이스 선언
int WGOpenEmbeddedWebView(const char* url);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
url | char* | 오픈하려는 웹페이지 링크 |
4) 반환값
1: 오픈; 0 혹은 음수: 오픈 실패
5) 예시 코드
WGPlatform::GetInstance()->WGOpenEmbeddedWebView((char*)"www.qq.com");
6) 특수 설명
없음
7) 명칭 해석
없음
데이터 방식으로 브라우저 웹페이지 오픈
1) 기능 설명
게임창에서 데이터 방식으로 브라우저 웹페이지를 오픈합니다.
2) 인터페이스 선언
int WGOpenEmbeddedWebView(const char* charset , const char* data , int lens);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
charset | char* | 데이터로 코딩한 포멧(현재 UTF-8로 코딩한 데이터 만 적용 가능합니다) |
data | char* | 웹페이지에 전송하는 데이터 |
lens | int | 전송하는 데이터 길이 |
4) 반환값
1: 오픈; 0 혹은 음수: 오픈 실패
5) 예시 코드
WGPlatform::GetInstance()->WGOpenEmbeddedWebView((char*)"UTF-8",
(char*)"data",
lens);
6) 특수 설명
없음
7) 명칭 해석
없음
게임창에서 브라우저 웹페이지 닫기
1) 기능 설명
게임창에서 브라우저 웹페이지를 닫습니다.
2) 인터페이스 선언
int WGCloseEmbeddedWebView();
3) 파라미터 설명
없음
4) 반환값
1: 닫기; 0 혹은 음수: 닫기 실패
5) 예시 코드
bool bOk = WGPlatform::GetInstance()->WGCloseEmbeddedWebView();
6) 특수 설명
없음
7) 명칭 해석
없음
게임에서 메시지를 웹페이지 js함수에 발송
1) 기능 설명
게임에서 메시지를 웹페이지 js함수에 발송합니다.
2) 인터페이스 선언
void WGCallToEmbeddedWebView(const char* params);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
params | char* | js함수에 발송하려는 함수명, 파라미터 정보. 게임측에서 웹페이지측과 소통하여 획득해야 합니다. |
4) 반환값
없음
5) 예시 코드
WGPlatform::GetInstance()->WGCallToEmbeddedWebView((char*)"params");
6) 특수 설명
없음
7) 명칭 해석
없음
웹뷰(webview) 배경 이미지 설정
1) 기능 설명
웹뷰 배경 이미지를 설정합니다.
2) 인터페이스 선언
bool WGSetEmbeddedWebViewBackground(const char* imageData , int lens);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
imageData | char* | data 이미지 데이터 |
lens | int | lens 이미지 데이터 길이 |
4) 반환값
없음
5) 예시 코드
WGPlatform::GetInstance()->WGPlatform::GetInstance()->WGSetEmbeddedWebViewBackground((char*)"data",
lens);
6) 특수 설명
없음
7) 명칭 해석
없음