其他常用功能
API 列表
SDK 接口名称 | 接口功能 | 备注 |
---|---|---|
checkIsEmulator | 检查是否为模拟器 | |
getAppId | 获取 OmniSDK AppId | |
getChannelId | 获取 APK 包的渠道 ID | |
getChannelName | 获取 APK 包的渠道名称 | |
getCpsName | 获取 APK 包的 cps 名称 | |
getPermissionGrantedStatus | 是否拥有某个权限 | |
getSDKVersion | 获取 OmniSDK Version | |
onExit | 退出弹窗逻辑 | |
openApplicationDetailsSettings | 打开系统权限设置界面 | |
openBrowserActivity | 通过 Custom Tabs 机制 打开网页 | |
openUserCenter | 打开渠道的账号个人中心页面 | 【已废弃】 |
registerPermissionsCallback | 权限申请结果回调 | |
requestPermissions | 申请权限 | |
showScoreDialog | ||
checkCanRequestPermission | 【已废弃】 | |
hasPermission | 【已废弃】 | |
registerRequestPermissions | 【已废弃】 |
1.检查是否为模拟器
方法原型
fun checkIsEmulator(
activity: Activity,
callback: EmulatorCallback?,
suspectNum: Int
): Boolean
接口说明
- 常见模拟器都可以检测出来,除非是某些高度仿真定制。
请求参数
字段 | 说明 | 类型 |
---|---|---|
suspectNum | 检查的疑似点个数:最小值 3,区间 3~7 (7+一维 n),推荐3 | |
callback | 设备信息回调,可以为 null |
接入示例代码
boolean isEmulator = OmniSDK.getInstance().checkIsEmulator(context, null, 3);
返回值
true
模拟器;false
真机
版本历史
- 1.0.8 上线
- 1.1.0 修复已知问题
2.获取 OmniSDK AppId
方法原型
fun getAppId(): String
接入示例代码
String appId = OmniSDK.getInstance().getAppId();
版本历史
- 1.0.3
3.获取 APK 包的渠道 ID
方法原型
fun getChannelId(): String
接入示例代码
String channelId = OmniSDK.getInstance().getChannelId();
版本历史
- 1.0.3
4.获取 APK 包的渠道名称
方法原型
fun getChannelName(): String
接入示例代码
String channelName = OmniSDK.getInstance().getChannelName();
版本历史
- 1.0.3
5.获取 APK 包的 cps 名称
方法原型
fun getCpsName(context: Context): String
接口说明
- 使用本方法,APK 包必须使用 OmniSDK GUI 工具提供的 CPS 工具,写入 CPS 信息,否则无效。
接入示例代码
String cpsName = OmniSDK.getInstance().getCpsName(context);
返回值
返回 APK 包的 cps 标签名;如果此 APK 包不是 cps 包则返回渠道名
版本历史
- 1.0.8
6.获取 OmniSDK Version
方法原型
fun fun getSDKVersion(): String
版本历史
- 1.5.5
7.退出弹窗
方法原型
@UiThread
fun onExit(
activity: Activity,
callback: ExitCallback,
hasGameCustomExitDialog: Boolean = false
)
接口说明
- 大部分渠道都有退出弹窗,并且要求游戏使用,否则审核无法通过。
- 少部分渠道没有退出弹窗,但要求游戏有处理退出逻辑的用户提示(弹窗或Toast),否则可能影响审核。
使用场景
- 游戏界面的退出游戏按钮
- 系统的 Back 键:(v3 如果继承 OmniSDK...Activity 则已注册好)
弹窗逻辑描述
- 游戏调用
onExit
时,需要传入参数hasGameCustomExitDialog
,确认是否接管少部分无退出弹窗渠道的退出弹窗逻辑。 - OmniSDK 会综合渠道逻辑及游戏传入参数
hasGameCustomExitDialog
,通过ExitCallback
的返回值showGameExitDialog
,告诉游戏是否需要弹出游戏的退出弹窗或直接执行退出逻辑。
弹窗逻辑处理
hasGameCustomExitDialog
为true
,表示游戏接管少部分无退出弹窗的渠道的后续退出逻辑。hasGameCustomExitDialog
为false
,表示这部分无退出弹窗的渠道,使用OmniSDK 的退出弹窗 UI。ExitCallback
的返回值canShowGameExitDialog
为true
,表示游戏弹出自己的退出弹窗 UI,并处理退出逻辑。ExitCallback
的返回值canShowGameExitDialog
为false
,表示游戏必须直接处理退出逻辑,即保存数据、结束进度。
请求参数
字段 | 说明 | 类型 |
---|---|---|
activity | 上下文 | |
hasGameCustomExitDialog | 游戏是否有自定义退出逻辑 | |
callback | 退出回调 |
接入示例代码
OmniSDK.getInstance().onExit(activity, new ExitCallback() {
@Override
public void onExit() {
// 游戏处理回调结果
}
}, false);
8.打开系统权限设置界面
方法原型
fun openApplicationDetailsSettings(context: Context)
接口说明
- 如果用户多次拒绝权限申请,权限弹窗将不再弹出,引导用户到系统界面打开权限。
- 根据不同手机系统,跳转到系统设置的游戏权限设置页面、或系统设置的游戏详情页面(这种场景权限设置一般在其二级页面)。
9.通过 Custom Tabs 机制打开网页
方法原型
fun openBrowserActivity(
activity: Activity,
@NonNull url: String,
@NonNull jsonParams: String
)
信息
- 官方文档 Custom Tabs 机制
Chrome Custom Tabs 机制简述
- 网页容器使用系统默认浏览器的容器,因此可以使用手机浏览器能使用的 web 技术标准。
- 通过此打开网页,游戏进程不会被系统杀掉。
- 可以添加 HTTP Request Headers、分享按钮等功能;如果网页需要应用数据,需要提前通过 Headers 或链接拼接的形式提供。
- 不支持 web 与 app 的动态交互功能,即通常说的 Androd-JS 交互功能。
FAQ
问:通过本接口打开网页,游戏进程会不会被系统杀掉?
答:通过此打开网页,游戏进程不会被系统杀掉。
- Custom Tabs 机制并不是跳出游戏栈去打开系统默认浏览器,而"拿"系统默认浏览器的 Web-Activity 当成游戏的网页容器,将其加载到游戏栈上。
- 其与在游戏内打开一个独立 Activity 页面后的效果一致,即引擎生命周期 onPause;关闭网页 onResume 恢复引擎。
- 此时游戏还在桌面前台,并不会因为系统回收内存而被杀掉游戏进程。
请求参数
字段 | 说明 | 类型 |
---|---|---|
activity | 上下文 no support application-context | |
url | web-url | |
jsonParams | 自定义功能 |
browser 数据结构
字段 | 类型 | 功能 | 描述 |
---|---|---|---|
web_url | ``String | 网页链接 | 需要打开的网页链接 |
show_share | Boolean | 分享按钮 | 是否通过SDK提供的分享接口进行分享;Custom Tabs 有默认的系统分享按钮 |
share_param | Share-Json | 分享数据 | 同 Social.share 的 shareJson 数据结构及机制 |
game_headers | JSON,key-value 事件体 | add HTTP Request Headers | 添加一些 Headers |
custom_tabs_config | JSON | custom tabs 容器可自定义功能 | 查看 #custom_tabs_config 数据结构 |
custom_tabs_config 数据结构
- custom tabs 容器可自定义的功能;
- 系统默认浏览器的版本支持时支持,在某些低版本手机里可能无效果。
字段 | 类型 | 功能 | 描述 |
---|---|---|---|
show_title | Boolean | 网页标题 | 是否显示网页标题:h5-title |
close_icon | res/drawable_id | 自定义关闭按钮 icon | 24*24 PNG 图片,res/drawable 文件夹下的图片 id 名 |
toolbar_color | 颜色值 | 设置容器的Toolbar 背景颜色 | 格式:#AARRGGBB 或 #RRGGBB |
jsonParams 示例
{
"show_share": true,
"share_param": {
"platform": "facebook,system",
"share_type": 0,
"image_type": 0,
"image_uri": 0,
"title": "OmniShare",
"content": "content",
"url": "https://developers.facebook.com/"
},
"game_headers": {
"h5": true,
"appid": 198707,
"platform": "android",
"heg": 175.55
},
"custom_tabs_config": {
"show_title": true,
"close_icon": "icon drawable_id",
"toolbar_color": "#AARRGGBB 或 #RRGGBB"
}
}
接入示例代码
// 组装自定义参数
BrowserParams browserParams = new BrowserParams(true, 0, false, false, false, false, false, 0, null, "title", null, "");
// 调用接口
OmniSDK.getInstance().openBrowserActivity(context, url, OmniUtils.toJson(browserParams));
版本历史
- 1.1.0 jsonParams 支持自定义功能
- 1.5.5 走 Chrome Custom Tabs(即系统浏览器)的应用内置方式启动
10.应用商店评分引导
方法原型
@UiThread
fun showScoreDialog(activity: Activity, callback: ResponseCallback)
接口说明
- 应用商店评分引导,当且渠道有相应方法时有效
- 需要在UI线程调用
- 可以通过以下方法判断当前渠道是否支持
boolean isSupported = OmniSDK.getInstance().isMethodSupported("showScoreDialog")
请求参数
字段 | 说明 | 类型 |
---|---|---|
activity | 上下文 | |
callback | 退出回调 |
接入示例代码
// 判断渠道是否支持渠道商店的游戏应用评分
if (OmniSDK.getInstance().isMethodSupported("openScoreDialog")) {
OmniSDK.getInstance().showScoreDialog(demoActivity, new ResponseCallback() {
@Override
public void onSuccess() {
}
@Override
public void onFailure(Pair<Integer, String> responseCode) {
}
});
} else {
// 当前渠道没有评分引导弹窗
}