2017-09-21 45 views
0

我试图让基本的旅程应用程序横幅工作。没有深层次的链接(在这个阶段),当用户访问我们的网站时可以获得我们的iOS应用,或者在已经安装的情况下启动它。 问题在于横幅总是显示“get in app store”选项,即使应用程序已安装在设备上。branch.io:无法从javascript中检测已安装的应用程序

我看了Branch.io: javascript detect whether mobile app is installed和其他类似的问题没有任何帮助。

我已经运行通用链接验证器和ulv_script.sh,它没有显示任何问题。

在网页我做的:

branch.init('My_key_live_xxx', null, function(err, data) { 
    console.log('init...'); 
    console.dir(data); 
}); 

数据属性看起来调试时,就像如下:

{data: "", data_parsed: {}, has_app: null, identity: null, referring_identity: null, …} 

在AppDelegate中的IOS-应用程序,我什么都不做,除了:

let branch: Branch = Branch.getInstance() 
     branch.initSession(launchOptions: launchOptions, andRegisterDeepLinkHandler: {params, error in 
      if error == nil { 
       // params are the deep linked params associated with the link that the user clicked -> was re-directed to this app 
       // params will be empty if no data found 
       // ... insert custom logic here ... 
       print("params: %@", params as? [String: AnyObject] ?? {}) 
      } 
     }) 

我想这里不需要特殊的代码,直到我真的想链接到应用程序中的特定位置。现在我只想应用程序打开(或实际上由于需要打开按钮,显示检测到刚刚被检测......)

半功能,始终指向应用程式商店,版本是住在case有人想先看到问题:https://www.papereed.com/player

我想我错过了一些关于branch.io真正重要的东西,希望有人可以提供帮助。 谢谢!

回答

1

由于苹果方面的限制,当用户点击Web浏览器(即Safari)上的通用链接时,如果链接与当前网页具有相同的域,则不使用通用链接打开应用程序,而是在Safari中打开链接。你可以阅读更多关于这个行为here

为了克服这个限制,Branch为Deepview按钮后面的链接使用了一个不同的域,以便被访问的域与当前网页不同。 Deepview按钮后面的链接使用格式为“-alternate.app.link”的域。

请确保您已在授权文件中为您的应用添加了-alternate.app.link域。您可以查看提供有关如何在此添加域的信息的文档。

对于“获取/在应用中打开”按钮,CTA更新:

这在开发过程中是常见的。由于应用程序经常在设备上重新安装,分支用于确定应用程序是否安装在设备上的标志has_app处于故障状态。

要强制重置has_app变量从“下载”到“打开”改变之旅的旗帜CTA,请按照下列步骤操作:

  1. 点击下载按钮 - 托特他玩或应用这应该重定向商店
  2. 安装应用
  3. 返回网页与旅程的旗帜,这应该还是显示的下载按钮
  4. 点击重新下载按钮 - 该应用程序应打开(一旦你更新的权利文件,包括在旅程配置中指定)和数据应提供给应用程序
  5. 关闭并重新打开网页与旅程的旗帜 - 旗帜现在应该有一个“打开”按钮
  6. 点击“打开“按钮

请注意,上述步骤仅在开发模式期间才需要用于测试目的。在生产环境中,用户不会看到这个问题。另请注意,CTA按钮可能需要一些时间才能更新。高峰时间可能高达30分钟。

+0

谢谢你,强制复位步骤,你给出了!可能是这个组合和CTA按钮更新延迟。 – jola

相关问题