-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
钉钉小程序开放接口API在taro3上无法正确识别平台 dingtalk-jsapi cannot detect correct platform on taro3 #8684
Comments
taro 1.3 版本正确工作的版本:https://github.com/DevanXU/dingtalk-jsapi-taro1.3 |
这个包没有源码不好调试,可以问问这个包的作者,或者再调试一下。 |
你这边会再跟进调试一下是吗? |
Taro对navigator对象进行了重写,导致dingtalk-jsapi对环境的判定不准。文件在dist/taro.js,关键部分代码如下:
这是钉钉官方的回复。 |
的确 Taro3 会模拟浏览器的 BOM API,包括模拟实现了 window.navigator ,他们的判断逻辑是怎样的。 |
他们没有提供进一步的信息。 |
1.x 和 3.x 的实现是完全不一样的,不存在能否参考做法一说,只能根据他们的具体实现,看看有没有解决办法。, |
“这个没有具体的信息可以提供 咱们这边跟钉钉平台有什么渠道可以沟通吗?碰到这种跟两边都有关联的问题时,通过我们来沟通效率会比较低。要在钉钉平台上开发应用 dingtalk-jsapi 这个包是绕不过去的。 |
dingtalk-jsapi的判断逻辑是: ua = navigator && navigator.userAgent; 如果是Android:isDingTalkRuntime&&isInAndroidEquipment ===true 而taro生成的目标文件taro.js,在小程序中重新了navigator: 这里是不是可以判断如果已经有window.navigator 就不要赋后面那个值,直接用window.navigator就好了 |
@Chen-jj 以上是来自钉钉团队的回复 |
我把工程下的@tarojs/taro包升级到3.1.3( |
|
@DevanXU CLI 、所有 Taro 相关依赖的版本要一致 |
之前为了修复 #8684,支付宝环境下 providePlugin 不提供模拟的 navigator 对象, 而是使用全局自带的 navigator 对象。 但支付宝的 navigator 对象在真机中没有 userAgent 属性,只有 swuserAgent, 这会引起 Vue3 报错,因此予以兼容。
之前为了修复 #8684,支付宝环境下 providePlugin 不提供模拟的 navigator 对象, 而是使用全局自带的 navigator 对象。 但支付宝的 navigator 对象在真机中没有 userAgent 属性,只有 swuserAgent, 这会引起 Vue3 报错,因此予以兼容。
相关平台
支付宝小程序
复现仓库
https://github.com/DevanXU/dingtalk-jsapi-taro3
小程序基础库: dingtalk/SDKVersion: 1.24.8
使用框架: React
复现步骤
taro init dingtalk-jsapi-taro3
yarn add dingtalk-jsapi
/pages/index/index.tsx
页面中引入dingtalk-jsapi包,并在componentDidMount
打印平台信息:console.log('env:', dingtalk.env.platform)
期望结果
/pages/index/index.tsx
打印出的信息应该显示正确的平台信息, e.g. "ios".实际结果
/pages/index/index.tsx
打印出 "notInDingtalk"环境信息
补充信息
在taro 1.3版本上可以打印出正确的平台信息
The text was updated successfully, but these errors were encountered: