1)去除 TPNS 中华为、小米、vivo 厂商通道能力
msdk_permission_content.html 支持配置化。根据是否配置来决定权限说明页展示与否。不展示情况下,在用户同意协议后即可直接进入游戏。
msdk_permission_content.html “置空” 或者 “被删除”,则不弹权限说明页面。用户在协议页面点击同意后,会直接进入游戏。
此次升级,Qimei SDK 从灯塔 SDK 中独立出来;在 Android 端进行灯塔设置前需要先行设置 Qimei 特别字段,否则将影响灯塔信息上报。
QimeiSDK.getInstance("appkey1").getStrategy()
.enableOAID(true) // 关闭oaid采集,这里设置false
.enableIMEI(true) // 关闭imei采集,这里设置false,建议如用户授权,尽可能采集,便于复核问题
.enableIMSI(true) // 关闭imsi采集,这里设置false
.enableAndroidId(true) // 关闭android id采集,这里设置false,建议如用户授权,尽可能采集,便于复核问题
.enableMAC(true) // 关闭mac采集,这里设置false
.enableCid(true); // 关闭cid采集,这里设置false
.enableProcessInfo(true) // 关闭应用列表枚举,这里设置false,1.0.5以上版本有效
.enableBuildModel(true) // 关闭BUILD.MODEL采集,这里设置false,1.2.3以上版本有效
注意,MSDK 默认将上述字段全部设为 false,这样 MSDK 包括灯塔都不会去主动采集,而是依赖业务在用户同意后,业务自行采集可通过以下任意一种方式处理:
其中,通过 MSDK 设置特别字段流程如下:
std::string sensitiveInfo = "{\"AndroidID\":\"xxx\", \"WiFiMacAddress\":\"xxx\", \"Imei\":\"xxx\", \"Model\":\"xxx\", \"Oaid\":\"xxx\", \"Imsi\":\"xxx\", \"Cid\":\"xxx\"}"; //json格式传入特别字段,不传入 Model 值会影响灯塔中台算法效果
MSDKSensitive::SetSensitiveInfo(sensitiveInfo); //设置特别信息
可在灯塔实时联调看到相应字段信息,具体字段 key-value 请参考:https://doc.weixin.qq.com/sheet/e3_m_FQqjSTulsZmQ?scode=AJEAIQdfAAoYCcswsTAP0AIgaEACc&tab=p142s5
注意事项:
MSDK 3.3.25 版本开始,灯塔、Qimei SDK 以插件化形式提供,支持灵活替换,相关 jar、so 包括:
新增 Imei & Apn & AndroidID & QImei & QImei36 字段在 msdkconfig.ini 中的本地配置开关以及代码接口控制开关,业务可按需自行配置这些字段是否允许采集;代码级别开关优先级高于 msdkconfig.ini 本地配置开关。
在 msdkconfig.ini 文件中新增 MSDK_DENIED_COLLECT_LIST 配置项,业务侧可将不允许采集的字段配置在这个配置项中(多个字段使用英文逗号连接),不配置默认允许采集;不允许采集配置示例如下:
MSDK_DENIED_COLLECT_LIST = Imei,Apn,AndroidID,QImei,QImei36
新增 WGSetCollectSensitiveInfo 接口控制特别字段的采集,该接口优先级高于 msdkconfig.ini 文件中的 MSDK_DENIED_COLLECT_LIST 配置项,接口说明如下:
/**
* 以json形式设置特别信息单字段开关,优先级小于总开关,目前支持设置AndroidID、Apn、Imei,QImei,QImei36
* 参数示例{"AndroidID":true,"Apn":true,"Imei":false,"QImei":true,"QImei36":true}
*
*/
void WGSetCollectSensitiveInfo(const char *jsonInfo);
此次升级,Qimei SDK 从灯塔 SDK 中独立出来;MSDK 3.3.25 版本开始,灯塔、Qimei SDK 以插件化形式提供,支持灵活替换;使用时除添加 MSDKBeacon/MSDKBeacon.framework 外还需添加 MSDKBeacon/Beacon 目录下其他 framework。
1)安卓内置浏览器优化
无
https://img.ssl.msdk.qq.com/wiki/msdkJsAdapter.js
var requestJson = '{"MsdkMethod":"WGSendGetPhoneNumberRequest","open_url":"https://xxx","port":443,"carrier":1}'
注意事项:
msdkCall('WGSendGetPhoneNumberRequest', requestJson)
注意事项:
function msdkCallback(data) {
}
msdkAddNativeCallbackObserver(msdkCallback)
注意事项:
升级TPNS主包和厂商通道TPNS(除oppo)包到1.3.1.1(oppo仍为1.1.6.3)。
Manifest 配置文件有内容变更,如下:
android:host="${applicationId}"
android:scheme="stpns" />
注意事项:
1)嵌入式浏览器新增通过JS接口关闭工具栏逻辑
2)iOS 15下内置浏览器逻辑优化
MSDK封装视频号授权,通过调用WGLogin接口,传入 ePlatform.ePlatform_WeixinVideoLive,在MSDK的回调中获取tdiAuthBuffer,用于后续的直播登录。
// 传入 ePlatform.ePlatform_WeixinVideoLive
WGPlatform.Instance.WGLogin(ePlatform.ePlatform_WeixinVideoLive);
{
"MsdkMethod": "OnLoginNotify",
"_flag": 0,
"_desc": "",
"_platform": 8,
"_open_id": "",
"_user_id": "",
"_pf": "",
"_pf_key": "",
"_token": [],
"_prajna_ext": "",
"_extra_json": "{\"tdiAuthBase64\":\"Cp4BMV9CZ0FBYTRpb3RxYVA3aUgwQ1AzejkzRlZWY0Y4OG55NmZPZlZtaXh3ZUZNVHMwYVdJK0FF\\nVFpQR1c1SnpKbDdySWpnSnV6MEJRL2EyUXlQQlJWMG0xejNlTzRTR25ZN1VvSmt4N01idmxyemVp\\nOGNRU21lSnkxZGt6M0JubTFsNkgxZGJIMWVYRWNMMDdJa3dlYzJQMVZCUmhnPT0SF2lsaW5rYXBw\\nXzA2MDAwMDNiNzhjMTc2\\n\"}"
}
注意事项:
新增开关配置接口,在用户同意用户协议条款之后,业务可调用该接口开启MSDK以及MSDK所包含的第三方组件对相关信息的获取;在开关开启之前,MSDK不会获取相关信息。
c++接口:
/*
* 设置是否允许获取相关信息
*/
void WGSetCouldCollectSensitiveInfo(bool couldCollect);
注意事项:
3.3.22版本之前,TPNS存在自启问题。当前,已经将自启相关配置去除,带来的影响是,TPNS Android端不能自启。
配置已变更为:
如果需要自启功能,可将配置恢复,如下:
如果接入小米通道,请删除NetworkStatusReceiver中对应的intent-filter配置:
对于msdkconfig.ini中配置SAVE_UPDATE为true的游戏需要关注该部分内容。
对于target 29及以上的游戏,需要为应用宝省流量SDK配置query,如果没有配置,则出现返回提示下载安装应用宝问题,示例如下:
...
MSDK 3.3.22版本开始将省流量SDK以插件化形式提供,支持灵活的替换和移除,相关jar包括:
对于不需要省流量SDK的游戏,可以移除上述jar,同时修改SAVE_UPDATE为false。
1)双端开关配置接口优化
2)安卓12适配
3)iOS新增设备型号
授权登录回调OnLoginNotify中,新增微信授权scope字段透传,业务侧可根据该字段判断用户是否有授权关系链权限;scope字段在LoginRet的extra_json中,示例如下:
用户授权关系链权限的scope样式:
loginRet.extra_json = "{\"scope\":\"snsapi_userinfo,snsapi_friend,snsapi_message\"}";
用户未授权关系链权限的scope样式:
loginRet.extra_json = "{\"scope\":\"snsapi_userinfo,snsapi_message\"}";
注意事项:
(1)微信平台需向微信(企业微信 wxgame)平台侧申请开通。
(2)QQ 平台当前不再支持该特性配置,请关注后续平台版本更新。
调用客户端关系链接口WGQueryQQGameFriendsInfo或WGQueryWXGameFriendsInfo时,若用户未授权关系链权限,则在回调接口OnRelationNotify中,relationRet.flag = eFlag_UnPermission(-9)。
/*
* 启动QQ小程序
* @param miniProgramAppid 必填,小程序的AppID(注:必须在QQ互联平台中,将该小程序与分享的App绑定)
* @param miniProgramPath 非必填,小程序的展示路径,不填展示默认小程序首页
* @param type 非必填,小程序的类型,默认正式版(ProgramType_Release)
*/
void WGLaunchQQMiniApp(const unsigned char *miniProgramAppid,
const unsigned char *miniProgramPath,
const eMiniProgramType &type = ProgramType_Release);
注意事项:
为对抗租号平台,从MSDK 3.3.21版本屏蔽QQ游戏中心启动游戏时的快速登录能力,游戏未登录状态下从QQ游戏中心启动将无法直接登录成功进入游戏;游戏中心启动异账号场景相关操作指引(游戏评估处理):
1) 游戏未登录:保持在登录页或调用QQ登录拉起QQ授权
2) 游戏已登录:
2.1) 无异账号:等待MSDK登录回调,登录成功则可进游戏
2.2) 有异账号:
2.2.1) 用户选择本地账号:等待MSDK登录回调,登录成功则可进游戏
2.2.2) 用户选择拉起账号:退回登录页或调用QQ登录拉起QQ授权页
注意事项:
新增内部策略优化开放接口,在用户同意用户协议条款之后,业务可调用该接口开启MSDK以及MSDK所包含的第三方组件(目前支持该能力的有灯塔和TBS组件)对相关信息的获取;在开关开启之前,MSDK不会获取相关信息。
java接口:
MSDKSensitive.setCouldCollectSensitiveInfo(true);
c++接口:
/*
* 设置是否允许获取相关信息
*/
void WGSetCouldCollectSensitiveInfo(bool couldCollect);
注意事项:
新增设置信息字段接口,在用户同意用户协议条款之后,业务可自行获取相关信息字段,调用该接口设置到MSDK以及MSDK所包含的第三方组件(目前支持该能力的有灯塔组件)。
java接口:
MSDKSensitive.setSensitiveInfo("{\"AndroidID\":\"xxx\", \"WiFiMacAddress\":\"xxx\", \"Imei\":\"xxx\"}");
c++接口:
/*
* 以json形式设置信息字段至各个组件SDK,目前支持{"AndroidID":"xxx","WiFiMacAddress":"xxx","Imei":"xxx"}
*/
void WGSetSensitiveInfo(const char *jsonInfo);
注意事项:
MSDKPolicy 已经按法务要求更新了协议,新增《第三方共享清单》和链接。由于协议发生变更,所以必须加入协议改动强制弹出逻辑。在新版本发布后,应用启动时重新弹出授权协议。升级详情参考:MSDK 游戏相关问题说明-1.1.4 升级步骤
MSDK WebView中,通过点击网页中播放器全屏按钮能够实现视频全屏播放功能。该功能目前仅限Android端,且接入了MSDK WebView功能。
与普通的WebView类似,通过继承ChromeClient类,并重写onShowCustomView和onHideCustomeView来实现。当有onShowCustomView请求时,添加这个View到顶层,保存当前屏幕状态,并设置屏幕为横屏、沉浸式;当onHideCustomeView请求过来,则将前面添加到顶层的View移除,并恢复原来的屏幕状态。
Android视频播放全屏验证:
注意事项:
1)优化MSDK Andorid内部策略优化
2)优化Android OnResume时Bugly模块上报逻辑
3)优化iOS libcurl裸符号问题
4)新增Android内置浏览器第三方cookies写入逻辑
5)新增MSDKPolicy插件对MSDK内部策略优化开放接口调用能力
6)新增MSDKPolicy插件内容变化强制重新弹窗能力
游戏引擎可以在启动前进行协议弹窗,例如接入MSDKPolicy组件,也可以在启动后,游戏内第一时间进行协议弹窗。如果是第2种情况,一般是MSDK先于游戏启动并初始化,但由于MSDK此时还未知内部策略优化开放接口的开关的状态,默认为关闭状态,导致启动、初始化后不能获取必要的相关信息,导致MSDK Android端与相关信息绑定的登录态失效,引起重新登录问题。
以下指引如何进行MSDK的延迟初始化。
将引擎启动前的MSDK代码Ctrl+X出来,这个过程可能涉及到原生代码,引擎相关代码。原生代码主要是GameActivity(不同游戏可能不同,代表游戏主Activity)启动过程的从onCreate到onResume之间的代码,涉及的生命周期方法包括:onCreate、onStart、onResume、以及onPause,onStop,onRestart,onDestroy。
从onCreate方法中,将初始化代码抽取出来,可以作为GameActivity的成员方法:
bool isInit = false;
public void delayInit(){
WGPlatform.Initialized(this, baseInfo);
// 设置拉起QQ时候需要用户授权的项
WGPlatform.WGSetPermission(WGQZonePermissions.eOPEN_ALL);
WGPlatform.handleCallback(this.getIntent());
isInit = true;
}
将生命周期中其它关于MSDK的调用包裹到isInit标记中,例如:
// TODO GAME 游戏需要集成此方法并调用WGPlatform.onRestart()
@Override
protected void onRestart() {
MLog.i("onRestart");
super.onRestart();
if (isInit) {
WGPlatform.onRestart();
}
}
@Override
protected void onResume() {
MLog.i("onResume");
super.onResume();
if (isInit) {
WGPlatform.onResume();
}
}
@Override
protected void onPause() {
MLog.i("onPause");
super.onPause();
if (isInit) {
WGPlatform.onPause();
}
}
@Override
protected void onStop() {
MLog.i("onStop");
super.onStop();
if (isInit){
WGPlatform.onStop();
}
}
@Override
protected void onDestroy() {
MLog.i("onDestroy");
super.onDestroy();
if (isInit){
WGPlatform.onDestory(this);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
MLog.i("onActivityResult");
super.onActivityResult(requestCode, resultCode, data);
if (isInit){
WGPlatform.onActivityResult(requestCode, resultCode, data);
}
}
@Override
protected void onNewIntent(Intent intent) {
MLog.i("onNewIntent");
super.onNewIntent(intent);
// TODO GAME 处理游戏被拉起的情况
// launchActivity的onCreat()和onNewIntent()中必须调用
// WGPlatformPrior.handleCallback()。否则会造成微信登录无回调
MLog.i(MLog.intentToString(intent));
if (isInit){
WGPlatform.handleCallback(intent);
}
}
引擎在内部策略优化后,调用delayInit方法,不同引擎,请使用引擎提供的方法反射调用。如果是Unity,参考示例如下:
AndroidJavaClass javaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject javaObject = javaClass.GetStatic("currentActivity");
javaObject.Call("delayInit");
对于UE4,建议使用Java方法直接调用。
注册Observer,对于不同引擎,初始化(delayInit)MSDK后,继续设置相应的Observer。
注意事项:
Xcode13.0及以上版本编译出的App在iOS 15.0及以上系统上被限制了URL Scheme query的数量为50。对于plist中LSApplicationQueriesSchemes配置的scheme数量超过50的App,可能会导致:
注意事项:
使用 13.0 及以上版本 Xcode 编译 App 的开发者需要适配以确保微信 OpenSDK 的正常使用。
从 iOS 9 开始,iOS 支持在工程 plist中配置LSApplicationQueriesSchemes。
将其他 App 的 scheme 配置到 `LSApplicationQueriesScheme` 中后,可以通过以下代码判断是否可以通过 scheme 跳转对于的 App。
BOOL ret = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"weixin://"]];
在接入微信 OpenSDK 时,微信接入文档有要求在LSApplicationQueriesScheme添加 weixin 和 weixinULAPI
和苹果确认,在iOS 15系统上,使用Xcode 13编译出的App, LSApplicationQueriesSchemes的数量会限制为50个。
第 50 个之后的 scheme 配置会不生效,以下代码会返回 NO。
BOOL ret = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"otherAppScheme://"]];
如果LSApplicationQueriesSchemes配置的scheme数量小于50,或者 "weixin" 和 "weixinULAPI" 这两个sheme在前50,无需适配。
使用Xcode 12及以下版本Xcode编译的App目前暂不需要适配。
确保 "weixin" 和 "weixinULAPI" 配置在 LSApplicationQueriesSchemes 的前 50。否则以下接口可能会在 iOS 15 系统上返回错误结果或者表现异常:
注意事项:
支持一键分享用户在游戏内生成的视频到微信视频号。
/**
* videoParams:视频信息,必填
* messageExt:拓展字段,选填,携带额外信息,当前版本暂未使用
**/
void WGSendToWXChannelShareVideo(VideoParams &videoParams, const unsigned char *messageExt);
注意事项:
分享状态到微信,成功之后,状态相关信息将显示在微信->我的个人头像下面,点击状态下面应用名称将自动跳转到指定页面。当前版本MSDK支持分享图片状态到微信。
/**
*
* 分享图片信息至微信状态
* 参数说明:
* stateId:状态ID,选填,不同的状态ID会显示不同的Icon
* stateTitle:状态标题,选填,限制32 个字符以内
* imageParams:图片信息,必填,图片比例为9:16
* 此struct在android、ios上对应的字段不同。android需要填写图片路径:android_imagePath。
* jumpUrl:跳转URL,必填,点击来源小尾巴后跳转的页面url,游戏先支持跳到“微信游戏圈”页面
*
*/
void WGSendToWXStateWithPhoto(const unsigned char *stateId,
const unsigned char *stateTitle,
ImageParams &imageParams,
const unsigned char *jumpUrl);
其它语言接口类似,对于游戏,stateId可以填写1019,jumpUrl为游戏圈地址,title设置后将作为编辑也默认值,跳转到微信之后,除了jumpUrl,其它均能够自主修改。
注意事项:
新增动态关闭Bugly监控接口,支持游戏自定义动态开启/关闭监控。有些场景下,游戏不需要崩溃上报,如:有些游戏在杀进程时触发的上报不想上报到bugly;此时可以调用该接口关闭崩溃上报,其他bugly功能不影响;重新启动应用后再触发的崩溃会正常上报。
/**
* 关闭bugly上报
**/
public void WGCloseCrashReport();
支持自定义Server Url功能,可用于Bugly到CrashSight的迁移。
Bugly Server Url在MSDKV3通过配置项进行自定义,相应配置项:
Android端Bugly自定义URL配置,msdkconfig.ini中
BUGLY_REPORT_URL_ANDROID={url}
示例:
Android端配置,在assets/msdkconfig.ini文件中,添加如下:
BUGLY_REPORT_URL_ANDROID = https://test-astat.bugly.qcloud.com/rqd/async
触发崩溃后或者Bugly日志后,管理端验证请到 crashsight.qq.com 进行验证。
注意事项:
在MSDK提供的浏览器中打开网页,查询一个安装包是否安装。适用于查询微信、QQ等应用程序是否安装,支持Android、iOS。通过js接口对外提供,需要运行在MSDK的WebView中才能生效,包括内置浏览器和嵌入式浏览器。
注:Android端,如果App的Target SDK为11,且运行在Android 11设备上,需要声明query才能正常使用该功能。
与MSDK其它js功能类似,判断应用安装接口遵循相同的js调用协议。参考如下代码实现js判断应用是否安装:
// 判断app是否安装
function msdkIsAppInstalled(target, callback){
if (isiOS()) {
params = '{"packageUrl":"' + target + '"}';
msdkiOSHandler('isAppInstalled', params, callback);
} else {
params = '{"MsdkMethod":"isAppInstalled","package":"' + target + '"}';
var result = prompt(params);
if(typeof callback == 'function'){
callback(result);
}
}
}
MsdkMethod 填 isAppInstalled, 如果是 iOS,使用 packageUrl,如果是 Android,使用 package
callback,回调函数,参数为字符串,true表示安装;flase表示未安装;其它表示查询失败。
判断QQ是否安装
function demoIsQQInstalled(){
if(isiOS()){
msdkIsAppInstalled("mqq://", function(resp){
alert(resp);
});
}else{
msdkIsAppInstalled("com.tencent.mobileqq", function(resp){
alert(resp);
});
}
}
判断微信是否安装
function demoIsWXInstalled(){
if(isiOS()){
msdkIsAppInstalled("weixin://", function(resp){
alert(resp);
});
}else{
msdkIsAppInstalled("com.tencent.mm", function(resp){
alert(resp);
});
}
}
注意事项:
1.调用setApplicationIconBadgeNumber本地调整应用的消息角标后,调用setBadge接口上报当前的角标到TPNS服务器。
2.webview handMessage在onDestroy或者init清空view的同时清空消息列表中的内容,同时做空保护。
3.更新MSDKPolicy插件文案:“权限请求” 修改为 “权限说明”、删除 “(必选)” 文案、默认配置中去除:存储权限、电话权限样例。
4.禁用webview的字体缩放解决了字体缩放导致的H5页面布局的问题。
注意事项:
支持一键分享用户在游戏内生成的视频到微信视频号。
/**
* videoParams:视频信息,必填
* messageExt:拓展字段,选填,携带额外信息,当前版本暂未使用
**/
void WGSendToWXChannelShareVideo(VideoParams &videoParams, const unsigned char *messageExt);
注意事项:
分享状态到微信,成功之后,状态相关信息将显示在微信->我的个人头像下面,点击状态下面应用名称将自动跳转到指定页面。当前版本MSDK支持分享图片状态到微信。
/**
*
* 分享图片信息至微信状态
* 参数说明:
* stateId:状态ID,选填,不同的状态ID会显示不同的Icon
* stateTitle:状态标题,选填,限制32 个字符以内
* imageParams:图片信息,必填,图片比例为9:16
* 图片信息的struct imageParams在android、ios上对应的字段不同;ios需要自行读取填写图片数据ios_imageData和图片数据长度ios_imageDataLen
* jumpUrl:跳转URL,必填,点击来源小尾巴后跳转的页面url,游戏先支持跳到“微信游戏圈”页面
*
*/
void WGSendToWXStateWithPhoto(const unsigned char *stateId,
const unsigned char *stateTitle,
ImageParams &imageParams,
const unsigned char *jumpUrl);
其它语言接口类似,对于游戏,stateId可以填写1019,jumpUrl为游戏圈地址,title设置后将作为编辑也默认值,跳转到微信之后,除了jumpUrl,其它均能够自主修改。
注意事项:
新增动态关闭Bugly监控接口,支持游戏自定义动态开启/关闭监控。有些场景下,游戏不需要崩溃上报,如:有些游戏在杀进程时触发的上报不想上报到bugly;此时可以调用该接口关闭崩溃上报,其他bugly功能不影响;重新启动应用后再触发的崩溃会正常上报。
/**
* 关闭bugly上报
**/
public void WGCloseCrashReport();
支持自定义Server Url功能,可用于Bugly到CrashSight的迁移。
Bugly Server Url在MSDKV3通过配置项进行自定义,相应配置项:
iOS端Bugly自定义URL配置,Info.plist中
BUGLY_REPORT_URL_IOS={url}
示例:
iOS端配置,在Info.plist文件中,添加如下:
...
BUGLY_REPORT_URL_IOS
https://pre.bugly.cros.wr.pvp.net/rqd/sync
...
触发崩溃后或者Bugly日志后,管理端验证请到 crashsight.qq.com 进行验证。
注意事项:
在MSDK提供的浏览器中打开网页,查询一个安装包是否安装。适用于查询微信、QQ等应用程序是否安装,支持Android、iOS。通过js接口对外提供,需要运行在MSDK的WebView中才能生效,包括内置浏览器和嵌入式浏览器。
与MSDK其它js功能类似,判断应用安装接口遵循相同的js调用协议。参考如下代码实现js判断应用是否安装:
// 判断app是否安装
function msdkIsAppInstalled(target, callback){
if (isiOS()) {
params = '{"packageUrl":"' + target + '"}';
msdkiOSHandler('isAppInstalled', params, callback);
} else {
params = '{"MsdkMethod":"isAppInstalled","package":"' + target + '"}';
var result = prompt(params);
if(typeof callback == 'function'){
callback(result);
}
}
}
MsdkMethod 填 isAppInstalled, 如果是 iOS,使用 packageUrl,如果是 Android,使用 package
callback,回调函数,参数为字符串,true表示安装;flase表示未安装;其它表示查询失败。
判断QQ是否安装
function demoIsQQInstalled(){
if(isiOS()){
msdkIsAppInstalled("mqq://", function(resp){
alert(resp);
});
}else{
msdkIsAppInstalled("com.tencent.mobileqq", function(resp){
alert(resp);
});
}
}
判断微信是否安装
function demoIsWXInstalled(){
if(isiOS()){
msdkIsAppInstalled("weixin://", function(resp){
alert(resp);
});
}else{
msdkIsAppInstalled("com.tencent.mm", function(resp){
alert(resp);
});
}
}
注意事项:
添加调试开关,可以用于打开、关闭iOS端Bugly和灯塔的调试开关。如果该配置项打开,则Bugly、Beacon将能够打印更多调试相关的日志。注意,Bugly和Beacon共用一个开关项,该功能与Android保持一致。
iOS STAT_LOG开关配置在info.plist中,与其他MSDK配置项保持一致。Android端请参考msdkconfig.ini。
STAT_LOG, BOOL, 打开、关闭Bugly和Beacon调试开关
示例:
...
STAT_LOG
...
默认不配置和false。
注意事项:
1.修复了ios14系统下请求授权和gps数据时,在用户未决定时释放了CLLocationManager对象导致弹窗消失的现象。
2.调用setApplicationIconBadgeNumber本地调整应用的消息角标后,调用setBadge接口上报当前的角标到TPNS服务器。
3.重写UIViewController方法修复webview的屏幕边缘手势操作的系统响应和APP响应冲突。
4.caid为空或者获取不到时不覆盖当前值。
5.修复了MSDK3.3.18版本在Unity 2019中出现的bug,解决了内置浏览器跳转至QQ再返回时出现异常的问题。
6.修复日志量较大时产生崩溃上报的问题。
Unity版本变更包含所有iOS、Android版本的变更,可参考iOS、Android版本的变更描述,客户端接口和iOS、Android版本略有差异,参考以下描述。
支持一键分享用户在游戏内生成的视频到微信视频号。
/**
* videoParams:视频信息,必填
* messageExt:拓展字段,选填,携带额外信息,当前版本暂未使用
*
*/
void WGSendToWXChannelShareVideo(VideoParams videoParams, string messageExt);
注意事项:
分享状态到微信,成功之后,状态相关信息将显示在微信->我的个人头像下面,点击状态下面应用名称将自动跳转到指定页面。当前版本MSDK支持分享图片状态到微信。
/**
*
* 分享图片信息至微信状态
* 参数说明:
* stateId:状态ID,选填,不同的状态ID会显示不同的Icon
* stateTitle:状态标题,选填,限制32 个字符以内
* imageParams:图片信息,必填,图片比例为9:16
* 此struct在android、ios上对应的字段不同。android需要填写图片路径:android_imagePath,ios需要自行读取填写图片数据ios_imageData和图片数据长度ios_imageDataLen
* jumpUrl:跳转URL,必填,点击来源小尾巴后跳转的页面url,游戏先支持跳到“微信游戏圈”页面
*
*/
void WGSendToWXStateWithPhoto(string stateId,
string stateTitle,
ImageParams imageParams,
string jumpUrl);
其它语言接口类似,对于游戏,stateId可以填写1019,jumpUrl为游戏圈地址,title设置后将作为编辑也默认值,跳转到微信之后,除了jumpUrl,其它均能够自主修改。
注意事项:
新增动态关闭Bugly监控接口,支持游戏自定义动态开启/关闭监控。有些场景下,游戏不需要崩溃上报,如:有些游戏在杀进程时触发的上报不想上报到bugly;此时可以调用该接口关闭崩溃上报,其他bugly功能不影响;重新启动应用后再触发的崩溃会正常上报。
/**
* 关闭bugly上报
**/
void WGCloseCrashReport();
Android MSDK关于灯塔的BEACON_SENSOR_ENABLE默认配置项由原来的关闭设置为开启状态,用于开启beacon_id的上报,以及qimei36权限的开通。
注:业务端暂不需要关注,如果需要开通qimei36,请确认该开关为开启状态。
V3.1.18版本开始支持qimei36上报功能,默认为空,需要业务联系灯塔开通,开通指引参考:https://iwiki.woa.com/pages/viewpage.action?pageId=417707553
对于AppKey,Android端一般为QQ号,iOS端为i+QQ号。
V3.3.18版本开始,信鸽推送被单独抽离成 TPNSSDK 和 HWPushSDK 插件提供。
注:
如果业务侧有接入TPNSSDK和HWPushSDK插件的需求,可直接将TPNSSDK和HWPushSDK插件完整的copy到与MSDKLibrary同级目录中,并在 build.gradle 、settings,gradle中添加如下引用(与MSDKLibrary同级);反之则删除引用和插件。
compile project(':TPNSSDK')
compile project(':HWPushSDK')
include ':HWPushSDK'
include ':TPNSSDK'
Unity版本默认使用TPNSSDK和HWPushSDK,如果不使用的话,可以删除TPNSSDK和HWPushSDK插件,并注释如下代码(路径:\Assets\Msdk\Editor\Scripts\Deploy\DeployAndroid.cs):
/* 7) TPNSSDK */
DeployTPNSSDK();
/* 8) HWPushSDK */
DeployHWPushSDK();
Unity 64 位打包指引已更新,指引文档地址:\Assets\Msdk\Editor\Librarys\Android3.2\Gradle
V3.3.18版本开始,WGSendToQQ、WGSendToQQWithPhoto、WGSendToQQWithArk 三个接口新增 tagname、messageExt 两个参数,注意处理,详情可参考:Android、iOS、Unity
msdkconfig.ini文件中新增灯塔、HttpDns配置关闭开关,业务可自行按需配置是否需要灯塔、HttpDns相关能力,开关不配置则默认开启灯塔和HttpDns组件,示例如下:
;灯塔上报开关,默认应将其设为false,设为true即关闭了灯塔上报功能
CLOSE_BEACON_REPORT=false
;HttpDns开关,默认应将其设为false,设为true即关闭了HttpDns功能
CLOSE_HTTPDNS=false
微信小程序拉起后返回游戏回调从OnShareNotify
调整为OnWakeUpNotify
,透传参数统一放在wakeupRet.messageExt
字段中。
info.plist文件中新增灯塔、HttpDns配置关闭开关,业务可自行按需配置是否需要灯塔、HttpDns相关能力,开关不配置则默认开启灯塔和HttpDns组件,示例如下:
;灯塔上报开关,默认应将其设为false,设为true即关闭了灯塔上报功能
<key>CLOSE_BEACON_REPORT</key>
<false/>
;HttpDns开关,默认应将其设为false,设为true即关闭了HttpDns功能
<key>CLOSE_HTTPDNS</key>
<false/>
微信小程序拉起后返回游戏回调从OnShareNotify
调整为OnWakeUpNotify
,透传参数统一放在wakeupRet.messageExt
字段中。
适配信鸽组件新版本,info.plist中信鸽相关配置也相应有所调整,业务更新需注意以下几个配置信息的调整变更:
1、调整XG_HOST配置项,如果为上海集群业务需调整为tpns.sh.tencent.com,具体配置内容需咨询信鸽团队
2、删除XG_PORT配置项
3、删除XG_STAT_PORT配置项
4、删除XG_STAT_HOST配置项
新增CAID的获取和上报能力,有CAID上报需求的业务需自行集成MSDK发布包中的TGPA组件tgpasimple.framework
,MSDK内部会通过反射调用获取并上报CAID。
注:CAID的获取和上报仅支持iOS9.0及以上系统,iOS9.0以下系统TGPA组件无法获取CAID。
主要适配QQ&微信&内置浏览器分享能力,业务接入时务必注意AndroidManifest.xml的变动以及新增资源文件file_paths.xml。为方便业务接入,QQ&微信&内置浏览器 FileProvider 配置合一起处理(如已接入3.3.12-3.3.15的业务升级,需注意修改)
AndroidManifest.xml文件中新增FileProvider配置,示例如下:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.example.wegame.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"/>
</provider>
注意事项:
其中com.example.wegame
需替换为业务自己的包名。
在res/xml/目录下新增file_paths.xml文件,文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-files-path name="opensdk_external" path="Images/tmp"/>
<external-files-path name="sharedata" path="shareData/"/>
<external-files-path name="msdk_webview_share" path="MSDK/msdk_webview"/>
<root-path name="opensdk_root" path=""/>
</paths>
新增QQ扫码登录能力,复用void WGQrCodeLogin(ePlatform platform)
接口,platform
参数传ePlatform_QQ
即可。无论机器上是否有安装QQ app,均可拉起QQ二维码登录进行扫码授权登录。
实名制浏览器新增loading页和加载菊花动画,在打开实名注册页面前会有短暂loading效果。各业务可在msdkconfig.ini文件中配置loading页背景色,不配置默认为#010C0F
,配置示例如下:
MSDK_CENTER_CONTROL_WEBVIEW_LOADING_BACKGROUND_COLOR=#010C0F
1. 更新HttpDns 0.0.61a版本
2. 更新QQ OpenSDK 3.5.0版本
3. 更新信鸽1.2.0.4版本
4. 更新灯塔3.2.0.4-bid3版本
5. 更新Bugly 3.2.34版本
1. 去除主包中LBS相关权限检查及API调用
2. 去除用户Local ip的收集和上报
3. 实名制浏览器添加MSDK UseAgent标识
<!-- 【注意】 XGPushActivity 配置于3.3.16 版本开始废弃 -->
<activity
android:name="com.tencent.android.tpush.XGPushActivity">
<intent-filter>
<action android:name="android.intent.action" />
</intent-filter>
</activity>
<!-- 【注意】 XGPushActivity 配置于3.3.16 版本开始废弃 -->
<!-- 【注意】 TpnsActivity 配置于3.3.16 版本开始新增,其中 host 替换成 “应用包名” -->
<activity android:name="com.tencent.android.tpush.TpnsActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
<intent-filter>
<data
android:scheme="tpns"
android:host="com.example.wegame"/>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<!-- 【注意】 TpnsActivity 配置于3.3.16 版本开始新增,其中 host 替换成 “应用包名” -->
<!-- MQTT START-->
<service android:exported="false"
android:process=":xg_vip_service"
<!-- 【注意】 name 于3.3.16 版本开始变更为 com.tencent.tpns.mqttchannel.services.MqttService-->
android:name="com.tencent.tpns.mqttchannel.services.MqttService" />
<!--【注意】authorities修改为 包名.XG_SETTINGS_PROVIDER -->
<provider
android:exported="false"
<!-- 【注意】 name 于3.3.16 版本开始变更为 com.tencent.tpns.baseapi.base.SettingsContentProvider-->
android:name="com.tencent.tpns.baseapi.base.SettingsContentProvider"
android:authorities="com.example.wegame.XG_SETTINGS_PROVIDER" />
<!-- MQTT END-->
新增QQ扫码登录能力,复用void WGQrCodeLogin(ePlatform platform)
接口,platform
参数传ePlatform_QQ
即可。无论机器上是否有安装QQ app,均可拉起QQ二维码登录进行扫码授权登录。
实名制浏览器新增loading页和加载菊花动画,在打开实名注册页面前会有短暂loading效果。各业务可在info.plist文件中配置loading页背景色,不配置默认为#010C0F
,配置示例如下:
<key>MSDK_CENTER_CONTROL_WEBVIEW_LOADING_BACKGROUND_COLOR</key>
<string>#010C0F</string>
苹果在iOS14系统调整了IDFA的获取权限,根据苹果现有政策,MSDK调整了IDFA默认获取行为,现版本默认行为为不判断用户是否授权直接获取。如业务有弹窗请求用户授权的需求,则需各业务自行给用户弹窗授权,按照以下步骤可实现MSDK在用户授权允许后才会获取IDFA:
AppTrackingTransparency.framework
<key>MSDK_APP_TRACKING_ENABLE</key>
<true/>
MSDK包中不再包含信鸽SDK的二进制文件,各业务可按需接入信鸽。接入信鸽的时候,MSDK对外接口保持不变,业务除了要链接MSDKPush.framework
外,还需要链接信鸽自己的SDK,信鸽SDK路径在MSDK版本解压后MSDKDemo/Library/MSDKPush/XG
目录。
如果接入点为上海集群(具体接入点可同 “腾讯云助手(技术支持)” 咨询确认),需要将 info.plist 中 XG_HOST 配置为 https://api.tpns.sh.tencent.com
,并做好信鸽相关功能测试。
1. 更新信鸽1.2.7.2版本
1. iPhone12系列机型内置浏览器&扫码登录界面适配
2. 去除用户Local ip的收集和上报
3. 实名制浏览器添加MSDK UseAgent标识
4. 信鸽前台接收推送消息默认无弹窗&无声音&无角标提示
5. 优化内置浏览器显示
解压 MSDK_iOS_3.3.xxxi.xxx.zip ,得到 MSDK_iOS_3.3.xxxi.xxx,添加以下文件到工程中
适配Unity2019打包。
新增绑定自定义账号能力,业务可调用WGSetPushAccount
接口绑定自定义账号,并通过管理端根据自定义账号下发推送消息。函数声明及相关参数说明在WGPlatform.h文件中,声明如下:
/**
* 设置用户账号
* @param account 用户账号
*/
void WGSetPushAccount(unsigned char *account);
新增解绑自定义账号能力,业务可调用WGDeletePushAccount
接口解绑自定义账号,解绑后将不可再通过管理端根据自定义账号下发推送消息。函数声明及相关参数说明在WGPlatform.h文件中,声明如下:
/**
* 删除设置的标签
* @param account 用户标签
*/
void WGDeletePushAccount(unsigned char *account);
新增信鸽反注册能力,业务可调用WGUnregisterPush
接口进行反注册,反注册后将不可再通过管理端对当前设备下发推送消息。函数声明及相关参数说明在WGPlatform.h文件中,声明如下:
/**
* 终止推送服务后,将无法通过腾讯移动推送服务向设备推送消息
* 如再次需要再次消息推送,则必须需要再次调用 WGRegisterAPNSPushNotification 方法重启腾讯移动推送服务。
*
*/
void WGUnregisterPush();
如果接入点为上海集群,需要新增以下配置(具体接入点可同 “腾讯云助手(技术支持)” 咨询确认)
在 AndroidManifest.xml 添加以下节点
<!-- XG 1.1.6.3 及之前的版本 XG_GUID_SERVER、XG_STAT_SERVER 和 XG_LOG_SERVER 配置生效, 1.1.6.3 以后的版本 XG_SERVER_SUFFIX 生效,建议都加上防止后面升级出现不兼容的问题-->
<meta-data
android:name="XG_GUID_SERVER"
android:value="https://guid.tpns.sh.tencent.com/guid/api/GetGuidAndMqttServer" />
<meta-data
android:name="XG_STAT_SERVER"
android:value="https://stat.tpns.sh.tencent.com/log/statistics/push" />
<meta-data
android:name="XG_LOG_SERVER"
android:value="https://log.tpns.sh.tencent.com/v3/mobile/log/upload" />
<meta-data
android:name="XG_SERVER_SUFFIX"
android:value="tpns.sh.tencent.com" />
新增打开内置浏览器全屏展示能力,可通过调用WGOpenUrl
接口并传递全屏参数fullScreen
为true即可,函数声明及相关参数说明在WGPlatform.h文件中,声明如下:
/**
* @param openUrl 要打开的url
*/
void WGOpenUrl(unsigned char *openUrl, const eMSDK_SCREENDIR &screenDir, const bool fullScreen, const char *algorithm = "v2");
新增MSDKPolicy 插件,该插件可在游戏首次安装启动时给用户弹窗提示游戏会收集用户相关信息,并向用户请求所需权限,业务可根据自身情况按需合入该插件。
添加MSDKPolicy
插件,可直接将MSDKPolicy
完整的copy到跟其他插件同级目录中,并引入MSDKPolicy
目录及添加对MSDKPolicy
的依赖
将启动Activity调整为MSDKPolicyActivity
,示例如下:
<!-- MSDKPolicy 插件配置 -->
<activity android:name="com.tencent.gcloud.msdk.core.policy.MSDKPolicyActivity"
android:configChanges = "keyboard|keyboardHidden|screenLayout|screenSize"
android:launchMode="singleTask"
android:theme="@style/MSDKPolicyTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>
<!-- MSDK_POLICY_TARGET_ACTIVITY 用于指定要跳转到的【应用或者游戏的首个activity】-->
<meta-data
android:name="MSDK_POLICY_TARGET_ACTIVITY"
android:value="com.example.wegame.MainActivity" />
<meta-data android:name="MSDK_POLICY_DEBUG" android:value="true"/>
<meta-data android:name="MSDK_RESULT_FILE_NAME" android:value="WEGAMEDB2"/>
<meta-data android:name="IS_MSDK_V5" android:value="false"/>
</activity>
注意事项:
MSDK_POLICY_TARGET_ACTIVITY
参数value值需调整为游戏的启动Activity。
其余参数请保持与示例一致。
LBS功能插件化,新增MSDKLbs.jar
,业务可按需合入。如不需要LBS能力,直接删除MSDKLibrary/libs/MSDKLbs.jar
文件即可
新增H5活动页面与Native桥接获取用户手机号能力,需要接入该能力的业务可企业微信咨询adanayang(杨洪平)
游戏项目assets目录下msdkconfig.ini文件中添加 V3SIGNING_ENABLED
,启用v3签名的包一定要打开这个开关(不开会导致渠道号读取错误),true为开启,不填默认关闭
新增绑定自定义账号能力,业务可调用WGSetPushAccount
接口绑定自定义账号,并通过管理端根据自定义账号下发推送消息。函数声明及相关参数说明在WGPlatform.h文件中,声明如下:
/**
* 设置用户账号
* @param account 用户账号
*/
void WGSetPushAccount(unsigned char *account);
新增解绑自定义账号能力,业务可调用WGDeletePushAccount
接口解绑自定义账号,解绑后将不可再通过管理端根据自定义账号下发推送消息。函数声明及相关参数说明在WGPlatform.h文件中,声明如下:
/**
* 删除设置的标签
* @param account 用户标签
*/
void WGDeletePushAccount(unsigned char *account);
新增信鸽反注册能力,业务可调用WGUnregisterPush
接口进行反注册,反注册后将不可再通过管理端对当前设备下发推送消息。函数声明及相关参数说明在WGPlatform.h文件中,声明如下:
/**
* 终止推送服务后,将无法通过腾讯移动推送服务向设备推送消息
* 如再次需要再次消息推送,则必须需要再次调用 WGRegisterAPNSPushNotification 方法重启腾讯移动推送服务。
*
*/
void WGUnregisterPush();
如果接入点为上海集群,需要新增以下配置(具体接入点可同 “腾讯云助手(技术支持)” 咨询确认)
在项目工程的 info.plist 添加
<key>XG_HOST</key>
<string>https://guid.tpns.sh.tencent.com</string>
<key>XG_PORT</key>
<integer>0</integer>
<key>XG_STAT_HOST</key>
<string>https://stat.tpns.sh.tencent.com</string>
<key>XG_STAT_PORT</key>
<integer>0</integer>
由于信鸽数据上报能力信鸽侧为反射调用,因此需要各业务自行添加对信鸽的依赖。接入信鸽能力除添加MSDKPush/MSDKPush.framework
外还需添加MSDKPush/XG
目录下的信鸽库及头文件。
新增打开内置浏览器全屏展示能力,可通过调用WGOpenUrl
接口并传递全屏参数fullScreen
为true即可,函数声明及相关参数说明在WGPlatform.h文件中,声明如下:
/**
* @param openUrl 要打开的url
*/
void WGOpenUrl(unsigned char *openUrl, const eMSDK_SCREENDIR &screenDir, const bool fullScreen, const char *algorithm = "v2");
新增微信Universal Link检测接口,可用于检测接入微信Universal Link登录&分享是否正常,可通过调用WGCheckWXUniversalLink
接口进行测试,检测结果通过onCheckULNotify
进行回调,调用示例如下:
//设置回调
MyObserver* ob = MyObserver::GetInstance();
WGPlatform::GetInstance()->WGSetObserver(ob);
//检查微信 UL
WGPlatform::GetInstance()->WGCheckWXUniversalLink();
//回调示例
void MyObserver::onCheckULNotify(CheckULRet& checkUlRet)
{
if (checkUlRet.success)
{
//检测成功
}
}
注意事项:
该能力仅可在MSDK联调环境下使用,严禁在现网环境下调用和使用。
IDFA获取模块化,新增MSDKSensitivity.framework
,业务可按需接入。
新增H5活动页面与Native桥接获取用户手机号能力,需要接入该能力的业务可企业微信咨询adanayang(杨洪平)
业务可通过配置开启Bugly卡顿监测,在info.plist
文件中配置MSDK_BUGLY_BLOCK_MONITOR_ENABLE
为true来开启,不配置默认关闭,示例如下:
<key>MSDK_BUGLY_BLOCK_MONITOR_ENABLE</key>
<true/>
业务可通过配置设置卡顿监测时间,在info.plist
文件中配置MSDK_BUGLY_BLOCK_MONITOR_TIMEOUT
,单位为秒,不配置默认为5秒,示例如下:
<key>MSDK_BUGLY_BLOCK_MONITOR_TIMEOUT</key>
<integer>5</integer>
解压 MSDK_iOS_3.3.xxxi.xxx.zip ,得到 MSDK_iOS_3.3.xxxi.xxx,添加以下文件到工程中
新增绑定自定义账号能力,业务可调用WGSetPushAccount
接口绑定自定义账号,并通过管理端根据自定义账号下发推送消息。函数声明及相关参数说明在IMsdk.cs文件中,声明如下:
/**
* 设置账号
* @param account 待设置的标签名称,不能为null或空。
*/
void WGSetPushAccount(string account);
新增解绑自定义账号能力,业务可调用WGDeletePushAccount
接口解绑自定义账号,解绑后将不可再通过管理端根据自定义账号下发推送消息。函数声明及相关参数说明在IMsdk.cs文件中,声明如下:
/**
* 设置账号
* @param account 待删除的账号名称,不能为null或空
*/
void WGDeletePushAccount(string account);
新增信鸽反注册能力,业务可调用WGUnregisterPush
接口进行反注册,反注册后将不可再通过管理端对当前设备下发推送消息。函数声明及相关参数说明在IMsdk.cs文件中,声明如下:
/**
* 停止推送
*/
void WGUnregisterPush();
新增打开内置浏览器全屏展示能力,可通过调用WGOpenUrl
接口并传递全屏参数fullScreen
为true即可,函数声明及相关参数说明在IMsdk.cs文件中,声明如下:
/**
* @param openUrl 要打开的url
* @param screendir 指定屏幕的方向
* eMSDK_SCREENDIR_SENSOR(0), //横竖屏
* eMSDK_SCREENDIR_PORTRAIT(1), //竖屏
* eMSDK_SCREENDIR_LANDSCAPE(2); //横屏
* @param fullScreen 是否全屏
*/
void WGOpenUrl(string openUrl, eMSDK_SCREENDIR screendir, bool fullScreen, string algorithm = "v2");
新增微信Universal Link检测接口,可用于检测接入微信Universal Link登录&分享是否正常,可通过调用WGCheckWXUniversalLink
接口进行测试,检测结果通过onCheckULNotify
进行回调,调用示例如下:
//设置回调
MsdkEvent.Instance.CheckULEvent += (CheckULRet ret) =>
{
if (ret. success)
{
//检测成功
}
};
//接口调用
WGPlatform.Instance.WGCheckWXUniversalLink();
注意事项:
该能力仅可在MSDK联调环境下使用,严禁在现网环境下调用和使用。
Android 新增MSDKPolicy 插件,该插件可在游戏首次安装启动时给用户弹窗提示游戏会收集用户相关信息,并向用户请求所需权限,业务可根据自身情况按需合入该插件。
MSDK部署面板中勾选 ENABLE MSDKPolicy
MSDK部署完成后,需要将启动Activity调整为MSDKPolicyActivity
,示例如下:
<!-- MSDKPolicy 插件配置 -->
<activity android:name="com.tencent.gcloud.msdk.core.policy.MSDKPolicyActivity"
android:configChanges = "keyboard|keyboardHidden|screenLayout|screenSize"
android:launchMode="singleTask"
android:theme="@style/MSDKPolicyTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>
<!-- MSDK_POLICY_TARGET_ACTIVITY 用于指定在流程结束时,需要跳转到的应用或者游戏的首个 Activity-->
<meta-data
android:name="MSDK_POLICY_TARGET_ACTIVITY"
android:value="com.example.wegame.MainActivity" />
<meta-data android:name="MSDK_POLICY_DEBUG" android:value="true"/>
<meta-data android:name="MSDK_RESULT_FILE_NAME" android:value="WEGAMEDB2"/>
<meta-data android:name="IS_MSDK_V5" android:value="false"/>
</activity>
注意事项:
MSDK_POLICY_TARGET_ACTIVITY
用于指定在流程结束时,需要跳转到的应用或者游戏的首个 activity,MSDK_POLICY_TARGET_ACTIVITY
参数value值需调整为游戏的启动Activity。MSDKPolicyActivity
屏幕方向不可配置为可旋转参考上述 Android 及 iOS 功能变更
解压 MSDK_iOS_3.3.xxxi.xxx.zip ,得到 MSDK_iOS_3.3.xxxi.xxx,添加以下文件到工程中
信鸽 Android 支持对联合保活能力进行配置,默认关闭,可防止自身应用拉起其他应用,无需额外配置。若有以下日志打印,则表明联合保活能力已经关闭:
I/TPNS: [ServiceUtil] disable pull up other app
如需开启联合保活能力,在 assets/msdkconfig.ini 文件中增加如下配置:
XG_PULL_UP_OTHER_APP_ENABLE = true
此外,可在 AndroidManifest.xml 文件中修改以下节点,配置自身应用不被其他应用拉起(如不需要可忽略,维持上一版本配置即可)
<!-- 在自身应用的AndroidManifest.xml文件中修改如下结点,其中 xxx 为任意自定义名称: -->
<!-- 关闭与 TPNS 应用的联合保活功能,请配置 -->
<provider
android:name="com.tencent.android.tpush.XGPushProvider"
tools:replace="android:authorities"
android:authorities="应用包名.xxx.XGVIP_PUSH_AUTH"
android:exported="false" />
解压 MSDK_iOS_3.3.12i.54.zip ,得到 MSDK_iOS_3.3.12i.54,添加以下文件到工程中
手 Q SDK 需要提供 fileProvider , 因此 MSDK 在 AndroidManifest.xml 中新增了
<provider android:authorities="com.example.wegame.QQSDKFileProvider"
android:name="android.support.v4.content.FileProvider"
android:exported="false"
android:grantUriPermissions="true" >
<meta-data android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"/>
</provider>
并在 MSDKLibrary/res/xml 目录中新增 file_paths.xml
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-files-path name="opensdk_external" path="Images/tmp"/>
<root-path name="opensdk_root" path=""/>
</paths>
当项目组升级时,需要把 com.example.wegame,替换为项目组包名,否则会导致图片分享时获取图片失败的异常,并有可能和其他 App 产生冲突
由于 fileProvider 影响图片分享,以此建议项目组接入时务必检查所有图片的分享,确保升级后功能可用
1、查看在线文档的手 Q 小程序分享,在此基础上项目组需要在原分享路径上新增 get 参数即可,参考如下
原 miniProgramPath 传递参数
miniProgramPath = pages/component/pages/launchApp813/launchApp813
将组队信息携带后
miniProgramPath = pages/component/pages/launchApp813/launchApp813?key1=value1&key2=value2
2、查看在线文档的登录中的 Wakeup 内容,实现如下回调即可,参考下面代码
```c# MsdkEvent.Instance.WakeupEvent += (WakeupRet wakeupRet) => { // TODO GAME 在异账号这里接收 手 Q组队信息 if (eFlag.eFlag_Succ == wakeupRet.flag || eFlag.eFlag.eFlag_NeedLogin == wakeupRet.flag { var messageExt = wakeupRet.messageExt; // messageExt 为传递参数的 JSON 格式的字符串{"key1": "value1","key2": "value2"} } };
### 4. Apple 账号登录配置
Apple 登录为新增渠道,文档较多,因此单独提供文档,参考同包提供的 Apple 登录文档:V3 Apple 登录
> 不需要 Apple 登录功能,也需要新增在 Xcode BuildPhases 中添加 AuthenticationServices.framework,同时设置 Status 为 optional,避免编译失败
>
> XUPorter 中的配置
>
> {
> "group": "MSDKApple",
> "libs": [],
> "frameworks": ["AuthenticationServices.framework:weak"],
> "files": [],
> "folders": [],
> "excludes": [],
> "headerpaths":[],
> "build_settings": {},
> "system_capabilities": {},
> "Info.plist":{}
> }
### 5. 信鸽推送配置更新
由于信鸽更新了腾讯云版本,变更很大,因此单独提供文档,参考同包提供的信鸽专属文档:信鸽腾讯云版本接入指引
### 6. WebView 模块 Loading 页面颜色开关说明
Android:msdkconfig.ini/iOS:info.plist中新增MSDK_WEBVIEW_LOADING_BACKGROUND_COLOR 字段,不配置或者配置为""时不开启加载的loading页面;如配置,会开启携带该背景颜色的loading页面且必须填写格式为不包含透明度的16进制颜色值,如:#000000
# V3.3.11更新方法
## 1. 新增打开AMS活动中心能力
新增打开AMS活动中心接口,调用该接口可使用MSDK自带内置浏览器自动打开业务AMS活动页。
### Android、iOS版本接口
函数声明及相关参数说明在WGPlatform.h文件中,声明如下:
/**
* 打开AMS营销活动中心
*
* @param gameName 业务代码缩写,每个业务不同,各业务在接入AMS平台时由系统分配。
* @param actChannelId 活动渠道ID,由活动管理端后台分配,各业务登录[互娱AMS]管理端自行获取。
* @param zoneId 用户区服信息,大区 1手Q,2微信
* @param platformId 平台ID:iOS(0),安卓(1)
* @param partitionId 小区ID
* @param roleId 角色ID
* @param extra 额外扩展参数,会以&extra=xxx形式附加在AMS活动中心url上,注意做好Url Encode
* @param screenDir 屏幕方向,默认横竖屏
*
*/
void WGOpenAmsCenter(unsigned char *gameName,
unsigned char *actChannelId,
unsigned char *zoneId,
unsigned char *platformId,
unsigned char *partitionId,
unsigned char *roleId,
unsigned char *extra,
const eMSDK_SCREENDIR &screenDir = eMSDK_SCREENDIR_SENSOR);
***注意事项***
目前`gameName`、`actChannelId `参数为必填参数,其余参数选填。
### Unity版本接口
函数声明及相关参数说明在IMsdk.cs文件中,声明如下:
/**
* 打开AMS营销活动中心
*
* @param gameName 业务代码缩写,每个业务不同,各业务在接入AMS平台时由系统分配。
* @param actChannelId 活动渠道ID,由活动管理端后台分配,各业务登录[互娱AMS]管理端自行获取。
* @param zoneId 用户区服信息,大区 1手Q,2微信
* @param platformId 平台ID:iOS(0),安卓(1)
* @param partitionId 小区ID
* @param roleId 角色ID
* @param extra 额外扩展参数,会以&extra=xxx形式附加在AMS活动中心url上,注意做好Url Encode
* @param screenDir 屏幕方向,默认横竖屏
*
*/
void WGOpenAmsCenter(string gameName, string actChannelId, string zoneId, string platformId, string partitionId, string roleId, string extra, eMSDK_SCREENDIR screenDir);
***注意事项***
目前`gameName`、`actChannelId `参数为必填参数,其余参数选填。
## 2. 新增内置浏览器JS分享支持自定义分享图片能力
内置浏览器中结构化消息、链接消息、大图消息、音乐消息JS分享接口新增自定义分享图片链接字段,调用以上JS分享接口时传入`imgUrl`字段以及相应的图片url地址即可实现自定义分享图片能力,以JS大图分享为例:
//不带自定义图片,默认使用屏幕截图
var QQPhotoShare2zone='{"MsdkMethod":"WGSendToQQWithPhoto","scene":"1"}';
//传入imgUrl字段,自定义分享图片
var QQPhotoShareCustomer2zone='{"MsdkMethod":"WGSendToQQWithPhoto","scene":"1","imgUrl":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1583129551585&di=664b676a72185b9dfe3649662c423027&imgtype=0&src=http%3A%2F%2Fspider.nosdn.127.net%2F39dbf6d3f8bfdd94047c67149b5d3470.jpeg"}';
```
更多调用示例可参考示例网页源码
info.plist
文件中新增MSDK_Webview_Force_Adapt_Bang_Screen
类型为BOOL的配置项,配置为true时,MSDK内置浏览器横屏状态时将全屏展示;配置为false或不配置时,MSDK内置浏览器行为与之前老版本保持一致。
Edit By MaHua