IOS Safari 中的 Javascript 后台进程

标签 javascript jquery ios background-process deep-linking

如果用户已安装在设备中,我会尝试将用户重定向到应用程序,否则会将他们重定向到应用程序下载页面(iTunes)。 我想捕获客户端最后去的确切网址(应用程序网址或网页网址)。

是否有任何后台进程来捕获客户端提供的 URL?

if (IOSSafari) 
{    
    window.location.href = appUrl;
    var startTime = new Date();
    setTimeout(function() 
    {                
        if (new Date() - startTime < 600) 
        {                 
            if (window.location.href != webUrl) 
                window.location.href = webUrl;
        }
    }, 500);
}

我的尝试(我尝试如下):-

if (IOSSafari) 
{    
    callback(appUrl); // first callback to my server to identify the user presence
    window.location.href = appUrl;
    var startTime = new Date();
    setTimeout(function() 
    {                
        if (new Date() - startTime < 600) 
        {                 
            if (window.location.href != webUrl) 
            {
                // second callback to my server to identify the user presence 
                callback(appUrl); 
                window.location.href = webUrl;
            }
        }
    }, 500);
}

案例 1 应用程序已安装:-

  1. 用户A进入
  2. 我的第一个回调有效,用户被重定向到应用
  3. 现在表中只有用户 A 的 appUrl 条目。由于用户出现在 app(appUrl) 中,这将按预期工作。

案例2应用程序未安装:-

  1. 用户A进入
  2. 我的第一个回调成功,用户被重定向到应用
  3. 由于设备中不存在应用程序,因此 safari 无法打开此页面
  4. 第二次回调起作用,用户重定向到应用下载页面
  5. 现在,用户 A 的表有 2 个条目(带有 appUrl 的条目和带有 webUrl 的条目),而不是单个条目(带有 webUrl 的条目,因为用户出现在下载页面中)

最佳答案

捕获该值的一种最简单方法是使用客户端 cookie。

document.cookie="lasturl="+xyz+";path=/";
//xyz is webUrl or appUrl , so write the above line before calling window.location.href=...

document.cookie="lasturl="+deeplinkUrl+";path=/";
window.location.href=deeplinkUrl;

//or

document.cookie="lasturl="+webUrl+";path=/";
window.location.href=webUrl;

稍后您可以检查“lasturl”的 cookie 值

关于IOS Safari 中的 Javascript 后台进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21405091/

相关文章:

javascript - next() is not a function 错误Node.js

javascript - 创建一个带有条纹效果的 slider

jQuery 选择指定字符串的范围

ios - 将某一年的周数转换为月份名称

objective-c - 无法使用 MPMoviePlayerController 运行视频文件?

iphone - webview 中阅读页面的自定义 Split View

javascript - 在vuejs中创建/w v-for时如何默认选择单选按钮?

javascript - "Uncaught TypeError: Cannot read property ' 在pdfMake pdf引擎中使用自定义图像时嵌入' of undefined"

javascript - 使用 clone() 绑定(bind)重复事件

ajax - jQuery.ajax() 到 json url 返回一个字符串而不是 json 对象