zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【华为联机对战服务】SDK初始化方法,返回1001错误码

方法华为服务SDK 返回 初始化 错误码 联机
2023-09-11 14:20:22 时间

问题描述

我们项目集成了华为联机对战SDK,在使用华为联机对战SDK内部方法时需要先调用联机对战初始化方法Client.Init初始化华为联机对战SDK。我们调用这个方法之后在Unity Editor里面运行项目,初始化方法可以调用成功,但是打包成apk在Android手机上运行时,初始化方法调用不成功,返回错误码1001。

图片

参考文档:初始化SDK

问题分析

查看华为官方的错误码文档,对1001错误码的解释是:请求参数错误,请检查接口请求参数。

图片

但是,若是请求参数错误,在Unity Editor里也应该访问不成功才对。不清楚是哪里出问题了,联系了华为技术支持,技术支持问我们:

  1. 有没有在调用初始化方法之前设置证书路径和日志打印路径:

    图片

    检查之后发现,已经加上了。

  2. 打包时用的是IL2CPP? 还是Mono?可在Unity中“File > Build Settings… > Player Settings… > Scripting Backend” 处查看。检查之后发现我们用的是IL2CPP。技术支持表示目前联机对战SDK还不支持IL2CPP,改成Mono试一下。改成Mono之后初始化还是报错:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gIVDF4qv-1660548518566)(https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/056/735/644/0260086000056735644.20220815140843.43156882311319356304425639834380:50530814070211:2800:0F970A220E73CBB3183ABDDAAC8223111A0D34FDF8B6AF3990C0FFD05E8BA58C.png)]
    这个异常,参考了这个帖子解决了:华为联机对战服务Unity SDK初始化接口报错:鉴权失败,Operation is not supported on this platform,但是又有了一个新的异常,返回错误码-1:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tBAaUT1q-1660548518566)(https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/056/735/644/0260086000056735644.20220815140855.50534530255779334700806656459499:50530814070211:2800:D130A224A29718BD547CDD6CE745223E219C75610EA1C58048AACF0C6C307DA1.png)]
    错误码文档中的解释是:服务端处理失败。
    图片
    继续咨询华为技术支持,经过不断的沟通尝试,最后定位到问题原因是:华为联机对战SDK内部使用System.Net.Http.WebRequest.dll内的方法实现网络请求,而我们项目中没有这个dll,只能使用Unity自带的api来实现网络请求,找不到联机对战SDK内部需要的方法,所以就出现了异常。我们建议华为可以使用Unity的api,这样兼容性会更好。华为技术支持表示他们用不了Unity的api。所以建议我们下载 4.5以上版本的System.Net.Http.WebRequest.dll放在项目的Plugins文件夹下。

  3. 我们使用了System.Net.Http.WebRequest.dll之后,在手机上运行依然报错:​​​​​​​

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m1w2Yg9z-1660548518567)(https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/056/735/644/0260086000056735644.20220815140919.11429670674096565000258062145261:50530814070211:2800:B7927DBFD4EFF8FD113E9A86667B183383D0C83B9587F72E2EEF75E4335081D5.png)]

    华为技术支持让我们检查Unity中“File > Build Settings… > Player Settings… > Managed Stripping Level ”配置的是不是Disabled,如果不是,需要改成Disabled。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9epLmpIf-1660548518567)(https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/056/735/644/0260086000056735644.20220815140929.75825088311123132809568989156046:50530814070211:2800:A2537410798FAE1C378D7CD8AB7F1384DA1169D86660BB50DCB32489CBCB96A2.png)]

问题解决

我们使用了System.Net.Http.WebRequest.dll并且把Managed Stripping Level改成Disabled之后,打包apk在手机上运行,可以成功调用华为联机对战SDK的初始化方法,问题成功解决。