WebView
WebView 界面使用 Player Network SDK 的 WebView 组件或原生系统浏览器来打开游戏内的特定网页,适用于 Android、iOS 和 PC 平台。WebView 接口传递 OpenID 和 token 至服务器,从而将 Player Network 账号服务与打开的网页连接起来。WebView 可用于打开网页版调查问卷、营销活动页面、游戏内 H5 玩家社区等。
WebView 界面采用系统的 WebView 组件实现,JS 和原生相互调用。
JS 和 Native 的交互部分,请参见 INTLWebViewSample.html。
WebView 配置
使用 WebView 界面之前,集成 SDK 并根据以下信息配置 INTLConfig.ini
文件里的 WebView 模块。
字段 | 说明 | 备注 |
---|---|---|
WEBVIEW_FULLSCREEN_ENABLE | 是否全屏 默认:关闭 | 选填 |
WEBVIEW_PORTRAIT_HIDEBAR_ENABLE | 当竖屏时,是否隐藏菜单栏 默认:0,不隐藏 | 选填 |
WEBVIEW_LANDSCAPE_HIDEBAR_ENABLE | 当横屏时,是否隐藏菜单栏 默认:0,不隐藏 | 选填 |
WEBVIEW_SHARE_CHANNEL | JS 的分享渠道,支持 Facebook,LINE,System 当设置为 NONE 时,不显示分享按钮当此字段设置为任意值时,启用系统分享。 默认:Facebook, Line, System。 | 选填 |
WEBVIEW_URL_KEY_FILTER | 过滤相关登录状态关键字的 URL 使用逗号 (,) 分隔字段,如: accesstoken,username 如果不需要过滤,输入 NONE 目前不支持Windows平台。 在 Android 平台上为 ExtraJson 参数中设置isSameProcessWebView=true 的 OpenURL 。 | 选填 |
CONFIG_KEY_BACK_DISABLE | 是否禁用返回按钮,(只限 Android) 默认:0,不禁用 | 选填 |
WEBVIEW_DEFAULT_WIDTH | Windows 登录 WebView 的宽度 单位:% | Windows 必填 |
WEBVIEW_DEFAULT_HEIGHT | Windows 登录 WebView 的高度 单位:% | Windows 必填 |
WEBVIEW_NAVIGATION_BUTTON_DISABLE | 是否禁用返回和系统浏览器按钮, 只限 Windows 默认:0, 不禁用 | Windows 必填 |
WEBVIEW_UI_COLOR_THEME | WebView 风格的框架 (dark/light), 只限 Windows 平台默认:暗 | Windows 必填 |
WEBVIEW_VIEWPORT_DPI | Webview 每英寸点数,设置浏览器的长宽,只限 Windows 默认:96 | Windows 必填 |
WEBVIEW_ALWAYS_ON_TOPMOST_WINDOW | WebView 总是在最前面,只限 Windows 默认:0,不总在前面 | Windows 选填 |
WEBVIEW_ACCEPTED_LANGUAGE_LIST | 提供网页 WebView 支持的语言, 只限 Windows 更多语言配置的信息,可以查看 语言表。默认:en-US, zh-CN, ja-JP, ko-KR | Windows 选填 |
WEBVIEW_SHARE_BUTTON_DISABLE | 隐藏/显示分享(通过系统浏览器打开)按钮 只限 Windows 默认值:0, 显示分享(通过系统浏览器打开)按钮; 1- 隐藏分享(通过系统浏览器打开)按钮, 0 - 显示分享(通过系统浏览器打开)按钮 | Windows 选填 |
Android Webview 打开 HTTP 网页
出于安全的需要,Android 官方强烈建议使用 HTTPS 协议而不是 HTTP 协议。在 Android 系统上使用 WebView 加载 HTTPS 网页更为安全。
如果必须加载 HTTP,可以使用以下的解决方案:
A. 不使用
android:networkSecurityConfig
: 这个标签是用来指定一个网络安全配置的 XML 文件。不使用这个配置则任何 HTTP 和 HTTPS 都可以打开,不会有任何限制。这种方案的缺点是可能会加载到不安全的网页。B. 使用
android:networkSecurityConfig
: 的同时加载 HTTP 网页:将targetSdkVersion
设置到 26 以下(不包括 26)。Android 系统将targetSdkVersion
设置到 26 以下的话,不会限制 HTTP 网页的加载。这种方案的缺点是 app 的实现和上架 Google Play 会有相应的限制。C. 使用
android:networkSecurityConfig
的同时将targetSdkVersion
设置到 26 或以上:设置 HTTP 访问的允许名单来绕开 Android 系统访问 HTTP 网页的限制。这种方案的缺点是允许名单新增了网页域名的话,需要重新发布 app。D. 使用
android:networkSecurityConfig
的同时将targetSdkVersion
设置到 26 或以上:在networkSecurityConfig
文件里面把默认拦截 HTTP 关掉(在 base-config 节点设置cleartextTrafficPermitted="true"
或者把整个节点删掉。这种方案的效果和方案 A 一样,缺点也是可能会加载到不安全的网页。具体代码如下:<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system"/>
</trust-anchors>
</base-config>
以上方案都需要在 AndroidManifest.xml
文件中设置 android:usesClearTextTraffic="true"
。
回调
- Unity
- Unreal Engine
API | 函数定义 |
---|---|
AddWebViewResultObserver | 注册 Player Network SDK WebView 模块 WebViewResult 的回调。用于处理 OpenUrl 等接口的回调。 |
RemoveWebViewResultObserver | 移除 WebViewResult 的回调。 |
API | 函数定义 |
---|---|
SetWebViewResultObserver | 设置 Player Network SDK WebView 模块 WebViewResult 的回调。 |
GetWebViewResultObserver | 获取 WebViewResult 的回调。 |
OnWebViewResult_Implementation | 实现 OpenUrl 等接口的 WebViewResult 的回调。 |
WebView 函数
- Unity
- Unreal Engine
API | 函数定义 |
---|---|
OpenUrl | 打开网址 |
GetEncryptUrl | 返回加密的输入 URL |
CallJS | 从原生调用 JS 代码 |
API | 函数定义 |
---|---|
OpenUrl | 打开网址 |
GetEncryptUrl | 返回加密的输入 URL |
CallJS | 从原生调用 JS 代码 |