2.x 升级 3.x
信息
回调处理
提示
- v2 使用对应的方法
onSuccess()
,onFailure()
和onCancel()
处理API的 成功、失败、取消 - v3 结果使用
OmniSDKResult
,通过result.isSuccess()
判断成功,失败时通过result.error
所提供的 code,判断是否为取消、网络异常、参数不正确等情况
以下示例:
- v3
- v2
new OmniSDKListener() {
....
@Override
public void onPurchase(@NonNull OmniSDKResult<OmniSDKPurchaseResult> result) {
if (result.isSuccess()) {
// 支付成功
OmniSDKPurchaseResult purchaseResult = result.get();
Log.i(tag, "onPurchase successfully, result = "+purchaseResult);
} else {
OmniSDKError error = result.error();
if (error.getCode() == OmniSDKErrorCode.USER_CANCELLED.getValue()) {
// 支付取消
Log.e(tag, "onPurchase cancelled");
} else {
Log.i(tag, "onPurchase Fail : "+error.toString())
}
}
}
...
}
// 注册支付监听
OmniSDK.getInstance().setPayNotifier(new PayNotifier() {
@Override
public void onSuccess(@NotNull Pair<Integer, String> sdkCodeMsg, @NotNull Order order) {
}
@Override
public void onFailure(@NotNull Pair<Integer, String> sdkCodeMsg, @Nullable Pair<Integer, String> channelCodeMsg, @Nullable Order order) {
}
@Override
public void onCancel() {
}
});
回调结果
OmniSDKResult
接口名称 | 接口功能 |
---|---|
isSuccess(): Boolean | 是否成功 |
get(): T | 获取对应结果的真实类型 |
error(): OmniSDKError | 失败时,获取对应错误信息 |
初始化
提示
- v2中
InitParams
初始化数据配置v3已移除,同时对应API名称initialize
变更为v3的start
- 以下示例:
- v3
- v2
// 设置OmniSDK回调监听
OmniSDKListener listener = new OmniSDKListener(){
....
@Override
public void onStart(@NonNull OmniSDKResult<OmniSDKStartResult> result) {
if (result.isSuccess()) {
Log.i(TAG, "Initialization Done Successfully");
} else {
Log.e(TAG, "Initialization Failed, error : " + result.error());
}
}
...
};
OmniSDKOptions options = OmniSDKOptions.builder().listener(listener).build();
OmniSDKv3.getInstance().start(options);
// 构建OmniSDK初始化数据配置 v3废弃
InitParams initParams = new InitParams();
initParams.setDebug(false);
initParams.setEnvironment("Production");
// OmniSDK初始化数据配置接口调用
OmniSDK.getInstance().initialize(initParams);
OmniSDK.getInstance().setInitNotifier(new InitNotifier() {
@Override
public void onSuccess() {
Log.i(TAG, "Initialization Done Successfully");
}
@Override
public void onFailure(@NonNull String message) {
Log.e(TAG, "Initialization Failed, error : " + message);
}
});
账号 API
登录
提示
- v2 登录参数
loginParam: Map<String, String>
对应v3opts: OmniSDKLoginOptions
- v2 选择登录账号类型
AccountType
对应v3OmniSDKAuthMethod
以下示例:
- v3
- v2
// 构建登录请求opts
OmniSDKLoginOptions opts = OmniSDKLoginOptions.builder()
// 需要使用账号体系
.authMethod(OmniSDKAuthMethod.NONE)
.build();
OmniSDKv3.getInstance().login(appActivity, opts);
// 构建登录请求数据Map
Map<String, String> loginParams = new HashMap<>();
// 需要使用账号体系
loginParams.put(OmniConstant.accountType, AccountType.NONE.getId());
OmniSDK.getInstance().login(appActivity, loginParams);
获取登录信息
提示
- v2 登录信息返回值类型是Json字符串,v3变更为
OmniSDKLoginInfo
,便于cp进行数据解析
以下示例:
- v3
- v2
OmniSDKLoginInfo loginInfo = OmniSDKv3.getInstance().getLoginInfo();
if (null != loginInfo){
// 获取用户信息进行玩家角色创建或登录
}
String json = OmniSDK.getInstance().getUserInfo();
if (json != null) {
UserInfo userInfo = OmniUtils.parseUserInfo(json);
} else {
// empty
}
v2返回 JSON 字符串与OmniSDKLoginInfo的字段差异
v2 | v3 | 描述 |
---|---|---|
uid | userId | 用户ID |
token | token | 令牌 |
showName | username | 用户名 |
verifySign | signature | 签名信息 (与 OmniSDK Server 通信使用) |
channelid | channelId | 渠道 |
verifyTimestamp | authTime | 时间戳 |
type | authMethod | 登录类型 |
state | 账号状态 | |
identityProviders | 关联账号类型 | |
cpUid | 废弃 | cpUid |
certification | 废弃 | 实名认证状态 |
ext | 废弃 | 扩展参数 |
关联账号
提示
- v2 参数
bindParam: Map<String, String>
对应v3opts: OmniSDKLinkAccountOptions
- v2 关联账号类型
mBindType
对应v3OmniSDKIdentityProvider
以下示例:
- v3
- v2
OmniSDKLinkAccountOptions opts = OmniSDKLinkAccountOptions.builder()
// 需要关联的账号平台
.idp(OmniSDKIdentityProvider.GOOGLE)
.build();
OmniSDKv3.getInstance().linkAccount(gameActivity, opts);
// 构建关联账号请求数据Map
Map<String, String> bindParams = new HashMap<>();
// 按照自身对接需求设置关联账号类型
bindParams.put(OmniConstant.accountType, String.valueOf(mBindType));
OmniSDK.getInstance().bindAccount(appActivity, bindParams);
切换账号
提示
- v2 切换账号参数
switchParam: Map<String, String>
对应v3opts: OmniSDKSwitchAccountOptions
枚举类型 - v2 关联账号类型
mSwitchType
对应v3OmniSDKIdentityProvider
以下示例:
- v3
- v2
OmniSDKSwitchAccountOptions opts = OmniSDKSwitchAccountOptions.builder()
// 需要切换的账号平台 直接通过
.idp(OmniSDKIdentityProvider.GOOGLE)
.build();
OmniSDKv3.getInstance().switchAccount(gameActivity, opts);
// 构建登录请求数据Map
Map<String, String> switchParam = new HashMap<>();
// 按照自身对接需求设置登录账号类型
loginParams.put(OmniConstant.accountType, String.valueOf(mSwitchType));
OmniSDK.getInstance().switchAccount(appActivity, switchParam);
关联账号模式
提示
- v2 关联账号API名称
getBindAccountMode
v3变更为getLinkAccountMode
以下示例:
- v3
- v2
int linkAccountMode = OmniSDKv3.getInstance().getLinkAccountMode(context);
// 构建登录请求数据Map
int bindAccountMode = OmniSDK.getInstance().getBindAccountMode(context);
购买 API
提示
- v2 商品信息参数
Product
对应v3OmniSDKPurchaseOptions
,同时API名称pay
变更为purchase
以下示例:
- v3
- v2
//创建商品信息
OmniSDKPurchaseOptions opts = OmniSDKPurchaseOptions.builder()
.productId(productId)
// 默认为 普通消耗型商品
.productType(skuType)
.productName(productName)
.productUnitPrice(productPrice)
.purchaseAmount(payAmount)
.purchaseQuantity(1)
.purchaseCallbackUrl(gameCallbackUrl)
.currency(currency)
.gameOrderId(gameOrderId)
.gameRoleId(roleId)
.gameRoleName(roleName)
.gameRoleLevel(roleLevel)
.gameRoleVipLevel(roleVipLevel)
.gameServerId(serverId)
.productDesc(productDesc)
.build();
OmniSDKv3.getInstance().purchase(appActivity, opts);
// 创建商品数据实体: 注意 skuType 商品类型,注意参数正确
Product gameProduct = new Product(
SkuType.INAPP,
productId,
productName,
productDesc,
productPrice,
payAmount,
currency,
serverId,
roleId,
gameTradeNo,
gameCallbackUrl,
extJson);
// 调用支付接口
OmniSDK.getInstance().pay(activity, gameProduct);
v2 Product
参数与 v3 OmniSDKPurchaseOptions 字段差异
v2 | v3 | 描述 |
---|---|---|
productId | productId | 商品ID |
productName | productName | 商品名称 |
productDesc | productDesc | 商品描述 |
productUnitPrice | productUnitPrice | 实际支付的货币单价 |
currency | currency | 商品货币代码 |
extJson | extJson | 透传扩展参数 |
skuType | productType | 商品类型 |
payAmount | purchaseAmount | 购买总额 |
productQuantity | purchaseQuantity | 购买数量 |
gameCallbackUrl | purchaseCallbackUrl | 支付回调地址 |
gameTradeNo | gameOrderId | 游戏订单ID |
roleId | gameRoleId | 角色ID |
roleName | gameRoleName | 角色名称 |
roleLevel | gameRoleLevel | 角色等级 |
roleVipLevel | gameRoleVipLevel | 角色的VIP等级 |
zoneId | gameZoneId | 区域ID |
serverId | gameServerId | 服务器ID |
totalAmount (废弃) | 商品总价 |
数据上报 API
信息
- v2数据上报是使用特定API来对应具体的事件,v3数据上报I统一调用
OmniSDKv3.getInstance().track(event: OmniSDKEvent)
,
通过event
的真实类型来区分上报何种事件,如创建角色事件OmniSDKCreateRoleEvent
- v2中角色信息
RoleInfo
对应于v3OmniSDKRoleInfo
创建角色
提示
- v2使用特定API
onCreateRole
,v3上报的是固定事件OmniSDKCreateRoleEvent
以下示例:
- v3
- v2
// 创建对应角色信息
OmniSDKRoleInfo sdkRoleInfo = OmniSDKRoleInfo.builder()
.userId(userId)
.roleId(roleId)
.roleLevel(roleLevel)
.roleName(roleName)
.serverId(serverId)
.serverName(serverName)
.extJson(extJson)
.build();
OmniSDKCreateRoleEvent event = new OmniSDKCreateRoleEvent(sdkRoleInfo);
OmniSDKv3.getInstance().track(event);
RoleInfo roleInfo = new RoleInfo();
roleInfo.setUid(uid);
roleInfo.setRoleId(roleId);
roleInfo.setRoleLevel(roleLevel);
roleInfo.setRoleName(roleName);
roleInfo.setRoleVipLevel(roleVipLevel);
roleInfo.setServerId(serverId);
roleInfo.setServerName(serverName);
roleInfo.setExt(ext);
OmniSDK.getInstance().onCreateRole(roleInfo);
进入游戏
提示
- v2使用特定API
onEnterGame
,v3上报的是固定事件OmniSDKEnterGameEvent
以下示例:
- v3
- v2
OmniSDKRoleInfo sdkRoleInfo = OmniSDKRoleInfo.builder()
.userId(userId)
.roleId(roleId)
.roleLevel(roleLevel)
.roleName(roleName)
.serverId(serverId)
.serverName(serverName)
.extJson(extJson)
.build();
OmniSDKEnterGameEvent event = new OmniSDKEnterGameEvent(sdkRoleInfo);
OmniSDKv3.getInstance().track(event);
RoleInfo roleInfo = new RoleInfo();
roleInfo.setUid(uid);
roleInfo.setRoleId(roleId);
roleInfo.setRoleLevel(roleLevel);
roleInfo.setRoleName(roleName);
roleInfo.setRoleVipLevel(roleVipLevel);
roleInfo.setServerId(serverId);
roleInfo.setServerName(serverName);
roleInfo.setExt(ext);
OmniSDK.getInstance().onEnterGame(roleInfo);
角色升级
提示
- v2使用特定API
onRoleLevelUp
,v3上报的是固定事件OmniSDKRoleLevelUpEvent
以下示例:
- v3
- v2
OmniSDKRoleInfo sdkRoleInfo = OmniSDKRoleInfo.builder()
.userId(userId)
.roleId(roleId)
.roleLevel(roleLevel)
.roleName(roleName)
.serverId(serverId)
.serverName(serverName)
.extJson(extJson)
.build();
OmniSDKRoleLevelUpEvent event = new OmniSDKRoleLevelUpEvent(sdkRoleInfo);
OmniSDKv3.getInstance().track(event);
RoleInfo roleInfo = new RoleInfo();
roleInfo.setUid(uid);
roleInfo.setRoleId(roleId);
roleInfo.setRoleLevel(roleLevel);
roleInfo.setRoleName(roleName);
roleInfo.setRoleVipLevel(roleVipLevel);
roleInfo.setServerId(serverId);
roleInfo.setServerName(serverName);
roleInfo.setExt(ext);
OmniSDK.getInstance().onRoleLevelUp(roleInfo);
游戏发货成功
提示
- v2中支付信息
PayInfo
对应于v3OmniSDKPurchaseEvent
以下示例:
- v3
- v2
OmniSDKPurchaseEvent event = OmniSDKPurchaseEvent.builder()
.userId(userId)
.orderId(orderId)
.productId(productId)
.productDesc(productDesc)
.productUnitPrice(productUnitPrice)
.productName(productName)
.currency(currency)
.gameServerId(gameServerId)
.gameRoleVipLevel(gameRoleVipLevel)
.gameRoleLevel(gameRoleLevel)
.gameRoleName(gameRoleName)
.gameRoleId(gameRoleId)
.gameOrderId(gameOrderId)
.extJson(extJson)
.purchaseQuantity(purchaseQuantity)
.purchaseAmount(purchaseAmount)
.build();
OmniSDKv3.getInstance().track(event);
// 构建支付信息
PayInfo payInfo = new PayInfo();
payInfo.setUid(uid);
payInfo.setProductId(productId);
payInfo.setProductName(productName);
payInfo.setProductDesc(productDesc);
payInfo.setProductUnit(productUnit);
payInfo.setProductUnitPrice(productUnitPrice);
payInfo.setProductQuantity(productQuantity);
payInfo.setTotalAmount(totalAmount);
payInfo.setPayAmount(payAmount);
payInfo.setCurrencyName(currencyName);
payInfo.setRoleId(roleId);
payInfo.setRoleName(roleName);
payInfo.setRoleLevel(roleLevel);
payInfo.setRoleVipLevel(roleVipLevel);
payInfo.setServerId(serverId);
payInfo.setZoneId(zoneId);
payInfo.setPartyName(partyName);
payInfo.setVirtualCurrencyBalance(virtualCurrencyBalance);
payInfo.setCustomInfo(customInfo);
payInfo.setGameTradeNo(gameTradeNo);
payInfo.setPaymentTypeName(paymentTypeName);
payInfo.setAdditionalParams(additionalParams);
payInfo.setPlatTradeNo(platTradeNo);
// 上报游戏发货完成
OmniSDK.getInstance().onPayFinish(payInfo);
v2中支付信息 PayInfo
与v3游戏发货成功事件OmniSDKPurchaseEvent
的差异
v2 | v3 | 描述 |
---|---|---|
uid | userId | 账号ID |
platTradeNo | orderId | SDK 订单ID |
productId | OmniSDKPurchaseOptions.productId | 商品ID |
productName | OmniSDKPurchaseOptions.productName | 商品名称 |
productDesc | OmniSDKPurchaseOptions.productDesc | 商品描述 |
productUnitPrice | OmniSDKPurchaseOptions.productUnitPrice | 商品单价,单位:元 |
productQuantity | OmniSDKPurchaseOptions.productQuantity | 购买数量 |
totalAmount | OmniSDKPurchaseOptions.purchaseAmount | 付费金额,单位:元 |
productUnit | OmniSDKPurchaseOptions.gameCurrencyUnit | 游戏货币单位(魔石,钻石...) |
roleId | OmniSDKPurchaseOptions.gameRoleId | 角色ID |
roleName | OmniSDKPurchaseOptions.gameRoleName | 角色名 |
roleLevel | OmniSDKPurchaseOptions.gameRoleLevel | 角色等级 |
roleVipLevel | OmniSDKPurchaseOptions.gameRoleVipLevel | 角色VIP等级 |
serverId | OmniSDKPurchaseOptions.gameServerId | 服ID |
gameTradeNo | OmniSDKPurchaseOptions.gameOrderId | 游戏订单ID |
currencyName | OmniSDKPurchaseOptions.currency | 货币代码 |
additionalParams | OmniSDKPurchaseOptions.extJson | 扩展字段 ,订单支付成功后,透传给游戏 |
totalAmount | 废弃 | 总金额 |
zoneId | 废弃 | 区ID |
partyName | 废弃 | 帮会名称 |
virtualCurrencyBalance | 废弃 | 虚拟货币余额 |
customInfo | 废弃 | 扩展字段 |
paymentTypeName | 废弃 | 支付类型 |
自定义买量付费事件
提示
- v2使用特定API
dataConsumeEvent
,v3上报的是固定事件OmniSDKRevenueEvent
以下示例:
- v3
- v2
OmniSDKRoleInfo sdkRoleInfo = OmniSDKRoleInfo.builder()
.userId(userId)
.roleId(roleId)
.roleLevel(roleLevel)
.roleName(roleName)
.serverId(serverId)
.serverName(serverName)
.extJson(extJson)
.build();
OmniSDKRevenueEvent event = OmniSDKRevenueEvent.builder()
.roleInfo(sdkRoleInfo)
.consumeNum(consumeNum)
.build();
OmniSDKv3.getInstance().track(event);
RoleInfo roleInfo = new RoleInfo();
roleInfo.setUid(uid);
roleInfo.setRoleId(roleId);
roleInfo.setRoleLevel(roleLevel);
roleInfo.setRoleName(roleName);
roleInfo.setRoleVipLevel(roleVipLevel);
roleInfo.setServerId(serverId);
roleInfo.setServerName(serverName);
roleInfo.setExt(ext);
//在玩家角色达到 50 级时,调用
OmniSDK.getInstance().dataConsumeEvent(roleInfo, 10);
常用工具类 API
退出弹窗
提示
- API名称从
onExit
变更为quit
,回调部分参考回调处理变更
以下示例:
- v3
- v2
OmniSDKQuitOptions opts = OmniSDKQuitOptions.builder()
.isCustomExitUi(gameCustom)
.build();
OmniSDKv3.getInstance().quit(appActivity, opts, result -> {
if (result.isSuccess()) {
OmniSDKQuitResult omniSDKQuitResult = result.get();
Log.i(tag, "quit successfully " + omniSDKQuitResult);
if (omniSDKQuitResult.isCustomExitUi()) {
// 游戏自定义退出游戏的逻辑
} else {
// 使用SDK的弹出游戏弹窗 可以直接杀死进程
killProcess();
}
} else {
OmniSDKError error = result.error();
Log.e(tag, "quit error:" + error);
// 游戏方不弹出自身退出UI界面,立即执行退出游戏业务逻辑处理,比如杀掉游戏应用进程等等
killProcess();
}
});
OmniSDK.getInstance().onExit(appActivity, new ExitCallback() {
@Override
public void onExit(boolean showExitUi) {
if (showExitUi) {
// 游戏方弹出自身退出UI界面,按照自身需求处理之后的业务逻辑
DemoLogger.i(tag, "launch exit ui");
callback.showExitUi();
} else {
// 游戏方不弹出自身退出UI界面,立即执行退出游戏业务逻辑处理,比如杀掉游戏应用进程等等
try {
android.os.Process.killProcess(android.os.Process.myPid());
} catch (Throwable e) {
e.printStackTrace();
}
}
}
}, gameCustom);
通过 Custom Tabs 机制打开网页
提示
- v2 网页配置参数为Json字符串,v3变更为
OmniSDKOpenBrowserOptions
,直接通过build方法构建相关参数
以下示例:
- v3
- v2
// 自定义数据组装
OmniSDKOpenBrowserOptions opts = OmniSDKOpenBrowserOptions.builder()
.url(url)
.toolbarLocation(ToolbarLocation.BOTTOM)
.showPrev(true)
.showNext(true)
.build();
OmniSDKv3.getInstance().openBrowserActivity(demoActivity, opts);
// 组装自定义参数
BrowserParams browserParams = new BrowserParams(true, 0, false, false, false, false, false, 0, null, "title", null, "");
// 调用接口
OmniSDK.getInstance().openBrowserActivity(context, url, OmniUtils.toJson(browserParams));
应用商店评分引导
提示
- API名称从
showScoreDialog
变更为openScoreDialog
,回调部分参考回调处理变更
以下示例:
- v3
- v2
OmniSDKv3.getInstance().openScoreDialog(demoActivity, result -> {
if (result.isSuccess()) {
Log.i(tag, "评分成功");
} else {
OmniSDKError error = result.error();
Log.e(tag,"评分失败:" + error);
}
});
// 判断渠道是否支持渠道商店的游戏应用评分
if (OmniSDK.getInstance().isMethodSupported("openScoreDialog")) {
OmniSDK.getInstance().showScoreDialog(demoActivity, new ResponseCallback() {
@Override
public void onSuccess() {
}
@Override
public void onFailure(Pair<Integer, String> responseCode) {
}
});
} else {
// 当前渠道没有评分引导弹窗
}
权限合规
获取权限状态
提示
- v2权限名称常量
permission
对应于 OmniSDKGetPermissionOptions内部,便于升级扩展
以下示例:
- v3
- v2
OmniSDKGetPermissionOptions bluetoothOpts = OmniSDKGetPermissionOptions
.builder()
// 蓝牙权限
.permission(Manifest.permission.BLUETOOTH)
.build();
int bluetoothAdmin = OmniSDKv3.getInstance().getPermissionGrantedStatus(gameActivity, bluetoothOpts);
// 获取安装apk权限
int status = OmniSDK.getInstance().getPermissionGrantedStatus(activity, "android.permission.REQUEST_INSTALL_PACKAGES");
申请权限
提示
- v2申请权限处理配置的Json字符串
permissionJson
对应于OmniSDKRequestPermissionsOptions
,回调部分参考回调处理变更
以下示例:
- v3
- v2
List<String> permissions = new ArrayList<>();
permissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
permissions.add(Manifest.permission.READ_EXTERNAL_STORAGE);
// 构建 引导权限请求弹窗信息
OmniSDKPermissionRationaleOptions applyDialog = OmniSDKPermissionRationaleOptions
.builder()
.title("温馨提示")
.rationale("(游戏)需要访问手机的存储空间,用于游戏资源更新等\\n\\n请允许权限申请")
.ok("允许")
.cancel("取消")
.build();
// 构建 跳转应用设置开启权限弹窗
OmniSDKPermissionRationaleOptions guideDialog = OmniSDKPermissionRationaleOptions
.builder()
.title("温馨提示")
.rationale("(游戏)需要访问手机的存储空间,用于游戏资源更新等\\n\\n请在系统设置界面-应用权限,开启访问存储空间的权限")
.ok("去开启")
.cancel("取消")
.build();
// 构建申请权限对应参数
OmniSDKRequestPermissionsOptions opts = OmniSDKRequestPermissionsOptions
.builder()
.showApplyDialog(true)
.timeLimit(0)
.permissionsList(permissions)
.applyDialog(applyDialog)
.guideToSettingDialog(guideDialog)
.build();
OmniSDKv3.getInstance().requestPermissions(appActivity, opts, result -> {
if (result.isSuccess()) {
OmniSDKRequestPermissionsResult requestResult = result.get();
Log.i(tag, "onExternalStorage: " + result.get());
} else {
OmniSDKError error = result.error();
Log.e(tag, "onExternalStorage error:" + error);
}
});
String jsonString = "{\"showDialog\":true,\"timeLimit\":48,\"permissions\":[{\"group\":[\"android.permission.WRITE_EXTERNAL_STORAGE\",\"android.permission.READ_EXTERNAL_STORAGE\", \"android.permission.READ_PHONE_STATE\"],\"applyDialog\":{\"title\":\"温馨提示\",\"rationale\":\"(游戏)需要访问手机的存储空间,用于游戏资源更新等\\n\\n请允许权限申请\",\"ok\":\"允许\",\"cancel\":\"取消\"},\"guideDialog\":{\"title\":\"温馨提示\",\"rationale\":\"(游戏)需要访问手机的存储空间,用于游戏资源更新等\\n\\n请在系统设置界面-应用权限,开启访问存储空间的权限\",\"ok\":\"去开启\",\"cancel\":\"取消\"}}]}";
// 注册回调结果
OmniSDK.getInstance().registerPermissionsCallback(new Permission2Callback() {
@Override
public void onResult(@NonNull String jsonString) {
DemoLogger.i(tag, "onExternalStorageImpl: " + jsonString);
callback.onResult(jsonString);
}
});
// 申请权限
OmniSDK.getInstance().requestPermissions(appActivity, requestJsonString);
v2参数requestJson字符串 与 v3OmniSDKRequestPermissionsOptions
字段的差异
v2 | v3 | 描述 |
---|---|---|
group | permissionsList | 需要请求具体权限字符串集合 |
timeLimit | timeLimit | 请求申请权限的时间间隔 单位 小时 |
applyDialog | applyDialog | 是否使用 OmniSDK 内部弹窗,特殊权限必弹 |
showDialog | showApplyDialog | 需要请求具体权限字符串集合 |
guideDialog | guideToSettingDialog | 引导用户去设置界面开启权限的弹窗文案 |
specialDialog | 废弃 | 特殊权限引导用户到权限设置界面 |
社交 API
分享
提示
- v2分享功能配置的Json字符串
ShareParam
对应于OmniSDKSocialShareOptions
,回调部分参考回调处理变更
以下示例:
- v3
- v2
// 1.本地图片,通常使用应用私有存储目录 通常使用应用私有存储目录:activity.getExternalFilesDir(null).getPath()
String imageUri = activity.getExternalFilesDir(null).getPath() + "/{local_image}";
// 2.网络图片地址 可下载访问的有效图片链接
// String imageUri = "https://xxx.xxx.xxx/xxx/003yHo7Nly1h6s53ckfoej63402c01l002.jpg";
OmniSDKSocialShareOptions opts = OmniSDKSocialShareOptions.builder()
.platform(OmniSDKSocialSharePlatform.SYSTEM)
.title("title")
.description("description")
.imageUrl(imageUri)
.build();
OmniSDKv3.getInstance().socialShare(activity, opts, result -> {
if (result.isSuccess()) {
// 分享成功
Log.i(tag, "share successfully");
callback.onSucceeded("success");
} else {
OmniSDKError error = result.error();
Log.e(tag, error.toString());
// 分享失败
callback.onFailed(error);
}
});
// 创建分享数据实体,注意分享类型 ShareType、图片类型 ShareImageType,注意参数正确
ShareParam shareParam = new ShareParam(
ShareType.IMAGE,
"title",
"description",
"link",
ShareImageType.LOCAL,
"shareUri");
// 调用分享接口
OmniSDK.getInstance().share(activity, platform, shareParam, new ResponseCallback() {
@Override
public void onFailure(@NonNull Pair<Integer, String> responseCode) {
// 游戏处理回调结果
}
@Override
public void onSuccess() {
// 游戏处理回调结果
}
});
v2分享功能配置 ShareParam
与 v3OmniSDKSocialShareOptions
字段的差异
v2 | v3 | 描述 |
---|---|---|
title | title | 标题文本 |
description | description | 具体描述文本 |
type | platform | 分享平台 |
link | linkUrl | 分享内容 URL |
imageUri | imageUrl | 分享图片 URL |
imageType | 废弃 | 图片类型 |
角色信息变更
OmniSDKRoleInfo
v2 角色信息 RoleInfo
与v3 OmniSDKRoleInfo
字段差异
v2 | v3 | 描述 |
---|---|---|
uid | userId | 角色等级;游戏必须传入真实的角色等级 |
zoneId | serverId | 游戏服务id |
serverName | serverName | 游戏服务名称 |
roleId | roleId | 角色ID |
roleName | roleName | 角色名 |
roleLevel | roleLevel | 角色等级;游戏必须传入真实的角色等级 |
roleVipLevel | roleVipLevel | 角色 VIP 等级 |
uid | 废弃 | 用户D,游戏必须使用登录时 SDK 返回的 uid |
zoneId | 废弃 | 游戏区ID |
zoneName | 废弃 | 游戏大区名称:要与界面显示名称一致;如:界面显示(一区 桃园结义);zoneName 也必须传(一区 桃园结义);UC 渠道要求必传真实值,否则无法通过审核 |
roleType | 废弃 | 角色类型;如法师,道士,战士 |
roleCreateTime | 废弃 | 角色创建时间(Unix 时间戳,单位秒);如:1461722392;UC 渠道要求必传真实值,否则无法通过审核 |
partyName | 废弃 | 公会名 |
gender | 废弃 | 角色性别:m,f,分别代表男女 |
balance | 废弃 | 角色账户余额 |