我们的 Ionic 2 移动应用程序被苹果拒绝了,原因如下:
我们注意到用户被带到 Safari 浏览器登录或注册帐户,这提供了较差的用户体验。 请修改您的应用,使用户能够在应用中登录或注册帐户。
Auth0 锁为用户提供了一个注册按钮,我们通过锁的signUpLink
选项配置了该按钮。此按钮在应用程序之外的系统浏览器 (Safari) 中打开注册页面,这显然是 Apple 无法接受的。
在我们升级到最新版本的 Ionic 2(Ionic 2 beta 11)之前,锁会在 InAppBrowser 中打开链接,这对于 Apple 来说是可以接受的。由于Ionic 2版本的差异,我想这可能是一个Ionic 问题。
我确保我安装了Cordova InAppBrowser插件。它存在于我的配置中.xml作为<plugin name="cordova-plugin-inappbrowser" spec="~1.6.1" />
,当我在 XCode 中打开 .xcproject 文件时,该插件存在于插件文件夹中。我还使用open('https://www.google.com/, '_blank');
手动测试了使用InAppBrowser,从而打开了InAppBrowser。
有关 Auth0 锁的代码和注册页面的 URL 都没有更改。
Auth0 锁定版本:10.6(在 10.11 上也试过,没有解决问题)
离子版本:2.1.0 操作系统:苹果
自 Ionic 2 beta 11 以来,可能发生了什么变化会影响在 InAppBrowser 中打开链接?
我想出了一个肮脏的临时解决方法,方法是在window.open
函数中打开链接的按钮中添加onclick
属性:
this.lock.on('show', () => {
let parent: Element = undefined;
let intervalIndex = 0;
let interval = setInterval(() => {
parent = document.getElementsByClassName('auth0-lock-tabs')[0];
if (parent) {
let item = parent.children.item(1).children.item(0);
item.setAttribute('onclick', `window.open('${AppSettings.registrationUrl}', '_blank'); return false;`);
item.removeAttribute('href');
clearInterval(interval);
}
if (intervalIndex == 20)
clearInterval(interval);
intervalIndex++;
}, 500);
});
通过此修改,注册链接将在InAppBrowser中打开,因此不再违反Apple的条款。
注意:这不是此问题的好答案,也不是保证的修复,因为在按钮上配置此onclick属性时存在延迟。