1. signIn导致弹窗无应用

问题复现:

该问题在集成HMSCore服务时出现,问题表现为多FA(Multi FA)集成的项目中,在entry模块中调用登录后没有反应,在该Demo测试中,使用的是JS UI模板构建的原子化服务,该Demo需要引用@hms-js-account 库,使用该库进行基本的登录,代码片段如下:


signIn: function() {
    //该登录方式依赖于"@hmscore/hms-jsb-account": "^1.0.300"
    var scopeList = [OPENID] //表示获取的
    var signInOption = new HuaweiIdAuthParamsHelper().setId().setProfile().setScopeList(scopeList).setAuthorizationCode().build();
    HuaweiIdAuthManager.getAuthApi().getSignInIntent(signInOption).then((result) = >{
        // 登录成功,获取用户的华为帐号信息
        console.info("signIn success");
        console.info(JSON.stringify(result));
        console.info("昵称:" + result.getDisplayName());
        console.info("头像:" + result.getAvatarUri());
    }).
    catch((error) = >{
        // 登录失败
        console.error("signIn fail");
        console.error(JSON.stringify(error));
    });

}

signIn2: function() {
    //该登录方式依赖于"@hmscore/hms-js-account": "5.2.0-300"
    HMSAccount.signIn(permissions, scopes).then((res) = >{
        //登录成功的处理代码
    }).
    catch((err) = >{
        switch (err.resultCode) {
            //处理异常,2005为网络异常代码
        }
    });
}

处理方式:

以上问题可以移除非entry模块中metaData闭包中关于com.huawei.hms.client.appid子闭包或者将其自闭包值改为和entry模块中对应的值一样,否则会出现无法登录的问题,该appid由OAuth 2.0生成,此处appid在AppGallery Connect页面中我的应用中可以查看,具体如下:

appid

"metaData": {
  "customizeData": [
    {
        //该闭包不应该在非enrty模块内添加
      "name": "com.huawei.hms.client.appid",
      "value": "10xxxxxx"
    },
    {
      "name": "hwc-theme",
      "value": "androidhwext:style/Theme.Emui.Translucent.NoTitleBar"
    }
  ]
}

增补:

对于使用HMS进行华为账号登录的时候,项目开发的appid可以前往华为开发者联盟凭证中去生成:

生成OAuth 2.0 ID

生成的应用类型选择移动应用,应用包名和SHA256指纹均需要和项目对应。

2. 代码修改后调试不生效

解决方案:

  1. 该问题主要是由于IDE工具的缓存问题,建议在不生效的时候先卸载app再安装,同时Rebuild项目,可以使用以下方式进行卸载:

    $ adb uninstall com.xxx.xxx #需要手机连接上电脑
  2. 另外一个问题可能是由于跨FA进行调用,这时候调试的时候记得开启Deploy Multi Hap Packages选项。
  3. 假设项目hml组件比较多,比如开发人员单独写了一个NavBarpage组件,如果在其他Component中(指的是单独一个Ability)引用,那么缓存的原因就不会更新该Ability引用的hml信息,最终也就在调试的时候看不到预期效果。
最后修改:2021 年 12 月 07 日 09 : 20 AM
如果觉得我的文章对你有用,请随意赞赏