如何获取通用链接的引荐字符串?

11

我在我们的iOS 9应用程序中实现了通用链接,它们通过调用AppDelegate.swift中的一个方法来工作,在该方法中,我使用附加URL的NSUserActivity

有没有一种方法可以获取(HTTP)引用者?我需要知道用户点击打开应用程序的链接的网站是哪个。

4个回答

5

这似乎有效!谢谢Art。提醒其他人:该属性在iOS 11之前不可用。 - scrrr
1
这仅适用于从浏览器重定向网站时使用?如果来自另一个应用程序,是否有解决方案?例如,在打开URL方法中的源应用程序。 - Shivam Mishra
4
似乎这不起作用。属性是存在的,但是它始终为 nil,无论是来自网站还是另一个应用程序。 - chadmoone
从我的经验来看,它对某些网页有效,而对其他网页则无效。例如-我能够从Safari Gmail中获取referrerURL,在那里我放置了我的通用链接,但在Safari Yahoo Mail、Safari Telegram中这样做会给我返回nil。同时,我也能够从Facebook和Twitter的网页中获取它。我不知道它在内部是如何工作的。 - Evgeny Karkan

3

不,无法获取引荐网址。

一位苹果员工在开发者论坛上明确表示:https://forums.developer.apple.com/thread/65423

他们说,获取某种类型的引荐网址的唯一方法是将其附加到 URL 上。或许可以看看谷歌的活动跟踪 URL(utm_...)来了解相关内容。


1
我发现另一个有趣的解决方案,如果您需要支持iOS 9和10-https://appmetrica.yandex.com/blog/referrer-based-tracking-dlya-ios-tochnaya-atributsiya-dlya-lyubogo-istochnika-trafika
自iOS 11以来,我猜可以使用NSUserActivity> referrerURL。
简而言之:
- SFSafariViewController使用与Safari应用程序相同的cookie。 - 您可以在应用程序内部打开不可见的SFSafariViewController。 - 如果您的网站包含某些cookie-请使用通用链接将其传递回应用程序。 虽然它需要在您的网站上实现类似跟踪链接的东西。

0
是的,如上所述,您可以通过NSUserActivity通过referrerURL获取引荐网址。
但是,根据您用于重定向的网站所建立的引荐策略,您可能会发现此referrerURL的值为nil
为了理解这一点,我们需要看一下引荐策略。这些策略用于确保从网站A传递引荐网址到另一个网站B的方式的安全性。
例如,在某些情况下,网站A不希望网站B能够获取引荐URL的详细参数,因此他们可以定义一种特定类型的策略。有时,他们可以通过设置no-referrer策略类型,完全将引荐网址设为null
这个策略被定义在名为Referrer policy的HTTP头中,目前默认的类型是:strict-origin-when-cross-origin。您可以通过打开检查器控制台>网络>选择网站URL并检查Referrer policy HTTP头来查看源网站使用的实际策略。
你可以看一下不同种类的政策以及它们适用的规则这里
例如,在我们的情况下,我们无法使用Safari顶部横幅获取转介URL,该横幅允许用户重定向到我们的应用程序。但是,使用特定的链接,如来自Twitter或Slack等的链接,可以提供转介URL。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接