钉钉微应用开发,调用JSAPI 时提示怎么处理?Not in DingTalk PC webview
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
当在钉钉微应用开发中调用JSAPI时提示"Not in DingTalk PC webview",这通常表示您正尝试在一个非钉钉PC Webview环境下调用JSAPI接口。钉钉的JSAPI只能在钉钉PC客户端或钉钉PC Webview中使用。
钉钉的JSAPI主要是为了提供一些与钉钉客户端交互的功能,例如获取用户信息、发送消息、打开钉钉页面等。因此,如果您的应用程序正在非钉钉PC客户端或非钉钉PC Webview中运行,则无法直接使用JSAPI。
解决这个问题的方法是确保您的应用程序在正确的环境中运行。请确保您在钉钉PC客户端或钉钉PC Webview中打开您的微应用,并在这些环境下进行JSAPI调用。如果您使用的是其他平台或环境,请考虑使用适合该平台的相应工具和技术进行开发和集成。
如果在钉钉微应用开发中调用JSAPI时提示"Not in DingTalk PC webview",这意味着您的代码正在非钉钉PC Webview环境下执行。
钉钉提供的JSAPI仅适用于在钉钉PC Webview环境中运行的应用程序。因此,在非钉钉PC Webview环境下,无法直接使用JSAPI进行相应的功能调用。
要解决这个问题,您可以进行以下操作:
确认运行环境:首先,请确保您的应用程序正在正确的钉钉PC Webview环境中运行,而不是在其他浏览器或Web容器等环境中打开。
使用兼容性方案:如果您需要在非钉钉PC Webview环境中使用类似的功能,可以考虑使用其他适用于该环境的兼容性方案或技术。例如,对于移动端浏览器环境,您可以使用HTML5提供的原生API来实现相关功能。
针对特定运行环境进行处理:如果您的应用程序同时支持多个运行环境(如钉钉PC Webview和浏览器环境),您可以根据当前的运行环境选择性地调用或展示相关功能。可以通过检测User-Agent标识或其他运行时属性来判断当前的环境,并根据环境进行不同的处理。
Not in DingTalk PC webview 这个提示表示,当前并非在钉钉PC版微应用内。
也就是说,在钉钉PC客户端里打开的钉钉微应用,与普通浏览器打开是不一样的。
钉钉微应用内,可以调用钉钉提供的JSAPI(JavaScript API)来实现不同的功能。
而 Not in DingTalk PC webview 这个错误正是在普通浏览器中调用JSAPI时提示的。
为什么会出现这个问题呢?
主要有以下几种可能:
使用钉钉外部浏览器打开你的微应用。这时并非钉钉PC端,所以提示错误。
在不在钉钉中的普通网页上调用钉钉JSAPI。也会提示不是钉钉PC视图。
微应用URL被分享到非钉钉客户端的地方。
处理方式主要有两种:
只在钉钉PC端调用JSAPI
使用以下JS可以检测当前是否在钉钉PC内部,然后再调用JSAPI:
js
Copy
if (window.DDT) {
// 在钉钉客户端
window.dd.ready(function(){ })
} else {
// 非钉钉客户端
}
兼容非钉钉客户端
提供适合普通浏览器的降级方案,来兼容非钉钉端。
微应用开发 调用JSAPI 时提示 Not in DingTalk PC webview
问题出错原因是:钉钉目前提供的前端API使用,需要在钉钉容器环境内打开的,如果环境不正确会报这些错误:
比如需要在钉钉移动端Android端、iOS端打开,或者钉钉PC端 Windows端、mac端打开等,在浏览器里打开会报错的
此回答整理自钉群“钉钉开发者社区(互助群)”