使用带签名URL作为文件参数调用ARCore Intent时遇异常
ARCore Scene Viewer加载带签名GLB URL失败的解决办法
URL编码问题:你的签名URL里包含
&、~这类特殊字符,直接作为Intent的file参数时,会被系统错误解析成多个Intent参数(比如Expires、Signature会被当成Scene Viewer的参数,而非file URL的一部分)。必须对整个签名GLB URL进行URL二次编码后,再传入file参数。响应头不兼容:当前签名URL指定了
response-content-type=application%2Foctet-stream和response-content-disposition=attachment,前者是二进制文件的通用类型,Scene Viewer更识别GLB专属的model/gltf-binary;后者会触发下载行为,Scene Viewer无法直接读取这类资源。需要调整签名生成逻辑,把Content-Type设为model/gltf-binary,Content-Disposition设为inline(或者不指定该字段)。CORS配置检查:确保OSS服务器的CORS规则允许
arvr.google.com跨域访问,否则Scene Viewer会因权限问题无法加载资源。
修正后的Intent示例(编码后的file参数)
intent://arvr.google.com/scene-viewer/1.0?file=https%3A%2F%2Fcdn.us.oss.api.autodesk.com%2Fcom.autodesk.oss-persistent%2Fus-east-1%2F22%2Fe3%2F6c%2Ff1bca4ba5ec7a29e5fceb4d0d204daf109%2Fjpomglbardample%3Fresponse-content-type%3Dmodel%252Fgltf-binary%26response-content-disposition%3Dinline%26Expires%3D1694307153%26Signature%3DW25z4iZg52j5lngLd7spR57dT-78tYsVpcAK%7EnonfDMhpe82u%7EqWRgo%7EuCMjdIdkFKBWZ7CsZqsYQB4XdF2Tr-l7mPbCuCSHCVFcfbUBhLtOgTkrwLcJ%7E0B5j8yy%7Et8vjusnYp1tlH2WssYvSqYGMGbptnsfPQAvj2mO43FKppTZeBl-QmxuKBEYxzwDGAG1B7S5t4LryiFfw%7ESj99DIaJPs4Ro%7EtUtYc--1ScIhA4AGrrJUWc57z0s7InFTsSNQEwgJ9tQr%7EXTle13QfLa6XfqvbhhIN8cx2vLqCFr2VGtB2GDjJ1zBYo57k5o0MLRdtXhQNReC2p%7EhFcABmK5VEw__%26Key-Pair-Id%3DK5HRZD7MMO1U9&mode=ar_only#Intent;scheme=https;package=com.google.android.googlequicksearchbox;action=android.intent.action.VIEW;S.browser_fallback_url=https://developers.google.com/ar;end;
验证步骤
- 先在浏览器中打开编码前的签名URL,确认资源是直接预览而非下载,且返回的Content-Type为
model/gltf-binary - 用编码后的URL替换Intent中的file参数,再测试加载
内容的提问来源于stack exchange,提问作者João Martins
相关产品推荐
相关产品推荐

