移动模板嵌入 App 常见问题

注意事项:

⚠️ Hxphone 的运行条件及运行环境要求

① Webview 需要开启 cookie 支持(特别是 Android 上面,可通过查看有没有 NG_LANGUAGE 的 cookie 来判断)

② Webview 需要开启 localstorage 支持

⚠️ Webview 环境的 user-agent 是否已经添加 hxphone/4.0 关键字

✅ 移动模板嵌入 APP 时,只有添加了user-agent 添加了 hxphone/4.0 关键字,程序才能正确的判断到对应的环境,启用内嵌模式,不然程序会以为它运行在普通的手机浏览器中,这样就没有了内嵌模式的高级功能了

⚠️ 单点登录是否满足 hxphone 程序的判定条件

✅ 进入单点的逻辑一定需要满足2个条件:1⃣️携带sid过来(通过URL Query携带、通过cookie携带) 2⃣️携带sso标识过来(通过cookie携带、通过使用 sso.html页面进入)

// 以下是 hxphone 程序内部判定是否单点进入并进行逻辑处理的代码
const sid = $location.$$search.sid || $cookies.get('Coremail.sid')
const isSSO = $cookies.get('Coremail.sso') === '1' || location.pathname.indexOf('/sso.html') !== -1
if (sid && isSSO) {
// 进行单点登陆的逻辑处理
}

常见问题:

Q: Android 上点击手机号跳转进入错误页面

A. Webview 需要设置对应的 Intent 捕获并且处理 tel: email: 等协议

Q: Android 上客户 APP 跳转到系统浏览器下载附件报错,无法下载

A. 下载附件需要 cookie 信息鉴权,从客户 APP 跳转到系统浏览器无法携带 cookie 鉴权。
请通过开启配置系统中的 enableAttachmentDownloadByToken 字段使用特殊下载通道进行下载

Q: 上传下载出现cookie不匹配或者不正确的情况

A: 需要 app 自行在下载请求的 header 中加入我们鉴权的 Cookie,或者下载可通过设置根目录下/json/settings.json里的enableAttachmentDownloadByToken为true绕过Cookie下载

Q: Android 上客户 APP 下载附件丢失文件名、文件后缀、乱码等问题导致附件无法打开

A. 附件下载请求头中的 Content-Disposition 字段包含了附件名,请客户 APP 根据对应信息自行命名下载到的附件。附件名在低于 XT 5.0.11 的版本默认使用了 GB 编码,高于 XT 5.0.11 对于 Android 的 UA 会自动使用 UTF-8 编码,为了对接方便,可以升级到 XT 5.0.11 以上的版本。具体 JIRA:CM-32053。

Q: iOS 12.2 写信页面点击附件上传按钮无效(无反应)

A: 这个已经证实是 UIWebview 的一个 BUG,请使用 WKWebview 来避免这个问题
苹果官方从 iOS8 开始建议开发者使用 WKWebview,iOS 12.0 开始 UIWebview 已经被彻底放弃维护

Q: iOS 上点击写信页面的附件上传按钮无效、个人网盘的上传菜单后整个页面崩溃(无反应)

A: 请确定 iOS 项目中的 Info.plish 含有对应的隐私申请项目,包括:

Privacy - Camera Usage Description
Privacy - Photo Library Additions Usage Description

Q: iOS 上无法下载附件,点击下载无反应

A: 由于 iOS 系统的沙盒机制,iOS APP 实际上面并没有"下载"功能,iOS APP 应该捕获移动模板的下载 URL 请求,然后通过内部的文件浏览器打开这个文件,需要客户研发自行处理

更新:iOS 13 后系统浏览器支持下载功能,下载的文件将保持至 iCloud 中,外壳 APP 可以将移动模板的下载链接通过系统浏览器打开

Q: iOS 上点击附件下载按钮,进入到附件预览页面,使用不正常

A: 点击“下载”按钮,脱离移动模板页面范围,进入到iOS系统的文件预览页面,这个页面不属于移动模板控制范围内,需要客户研发自行处理

Q: iOS 上点击下载按钮,进入的预览页面没有“返回”等按钮

A: 系统遇到支持打开预览的文件的时候会直接预览,这时候这个页面已经属于系统级别的页面,网页应用无法干预这个页面,需要客户研发自行处理

Q: 某些 APP 里,移动模板的导航栏标题显示为“TITLE”

A: 导航栏标题默认是 TITLE,然后会根据项目配置页面加载完成后改变成客户配置的标题,从而实现可控性。APP 内置的浏览器需要捕获这个标题的变化,进行动态的显示,这个是作为一个网页无法干预的,需要 APP 客户端自行去解决这个问题。也可以直接通过修复“index.html”和“sso.html”里面的直接写死自己想要的标题

Q: 与第三方 APP 内嵌,如何在初始化的时候指定特定的国际化语言

A: 我们是通过 cookie 里面控制国际化显示语言,只要在 webview 初始化之前,设置好你想要的默认显示的语言即可。cookie:NG_TRANSLATE_LANG_KEY 可选值:zh_CN、zh_TW、en_US

Q: 使用过程中,在某个页面提示“浏览器空间不足,请清除浏览器数据”

A: Webview 必须要开启 localStorage 功能支持,不然部分功能将无法正常使用


以上问题中,需要客户研发自行处理,但是客户又无对应的研发资源或技术能力的话,可以使用我们 SDK 嵌入方式,我们 SDK 会内部代为实现,接入更简单、功能更强大。

results matching ""

    No results matching ""