【问题标题】:Android and custom URL schemeAndroid 和自定义 URL 方案
【发布时间】:2020-10-24 17:56:20
【问题描述】:

我正在开发具有自定义 url 方案的应用程序。 它正在打开一些网页以在 chrome 选项卡中进行身份验证。这是以这样的 xamarin 形式完成的:

Browser.OpenAsync(apiUrl + "mobile", new BrowserLaunchOptions
            {
                LaunchMode = BrowserLaunchMode.SystemPreferred,
                TitleMode = BrowserTitleMode.Hide,
            });

如果我返回带有链接的网页并手动单击该链接,一切都会按预期工作:

<a href="myscheme://myhost/myparameters">Click here to go the app</a>

但是,如果我将 302 重定向返回到相同的 url,它将不会关闭 chrome 选项卡并且不会再次关注应用程序。 如果我在响应中添加 javascript,它不会自动打开 url(关闭 chrome 选项卡并关注应用程序) 我尝试过这样的事情:

window.location = url;
window.open(url,'_self');
setTimeout(()=>window.open(url,'_self'),10);

(url 是一个有效的变量,甚至在更改位置后尝试 alert(url) 并显示正确的 url。

为什么只有手动点击链接才有效?

【问题讨论】:

  • 所以,它在模拟器中不起作用,但是一旦我在华为 p20 pro 上安装了该应用程序,它就可以工作了..
  • 可以吗?

标签: android xamarin.forms xamarin.android


【解决方案1】:

为了维护用户的安全和体验,浏览器禁止在JS中直接使用window.open(URL)打开新链接。

尝试如下改变:

setTimeout(()=>window.open(url,'_self'),500); //The delay time must not be too short or you will be intercepted

【讨论】:

    猜你喜欢
    • 2011-04-30
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    • 2012-06-15
    • 2014-10-22
    相关资源
    最近更新 更多