深度链接到 Facebook Messenger
Posted
技术标签:
【中文标题】深度链接到 Facebook Messenger【英文标题】:Deep linking to Facebook Messenger 【发布时间】:2015-10-24 22:58:10 【问题描述】:通过大量搜索,我发现使用fb-messenger://user-thread/ID
可用于深度链接到 Messenger 并使用传入的 FB ID 打开现有线程,如果不存在则启动新线程。
它弹出到 Messenger 并打开一个线程,但该线程与 Facebook User
并没有实际发送。见下图。单击标题中的 Facebook 用户将转到具有正确用户图像和名称的详细信息视图。
如何使这项工作正常进行?
【问题讨论】:
请记住,Facebook 总是会不时更改他们的方案,因此请确保您没有将其作为系统中的关键部分。 嘿,克里斯,我现在这是一篇旧帖子,但你有没有让这个工作? 【参考方案1】:使用fb-messenger-public://user-thread/<ID>
我从 facebook messenger 网络挂钩有效负载中的收件人 ID 获得了我的 ID
。例如
"object": "page",
"entry": [
"id": "1163189980393936",
"time": 1500325170682,
"messaging": [
"sender":
"id": ""
,
"recipient":
"id": "ID"
,
"timestamp": 1500325170640,
"message":
"mid": "mid.$cAAQh6kd9svBjg56V0FdUllNamImF",
"seq": 2888,
"text": "..."
]
]
【讨论】:
【参考方案2】:如果要直接跳转代码,这里是:
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"https://m.me/%ld", USER_ID]];
if ([[UIApplication sharedApplication] canOpenURL:url])
[[UIApplication sharedApplication] openURL:url];
【讨论】:
【参考方案3】:正如WizKid(FB员工)所说here:
...没有记录的方式与... [Messenger] 进行交互 你可能随时会崩溃。
因此,考虑到这一点,听起来fb-messenger://user-thread/ID
已被弃用。话虽如此,我反编译了 Facebook android APK 并找到了一行:
return Uri.parse((new StringBuilder("fb-messenger://user/")).append(Uri.encode(s)).toString());
所以据我所知,fb-messenger://user-thread/ID
似乎已被 fb-messenger://user/ID
替换
还有一行是:
return Uri.parse((new StringBuilder("fb-messenger://thread/")).append(Uri.encode(s)).toString());
所以fb-messenger://thread/ID
也可能有效。 ID 可能是用户或线程 ID,我没有深入挖掘。
编辑:
当前 Facebook 网址是 fb-messenger-public://user-thread/ID
【讨论】:
感谢您挖掘并提供详尽的答案。将这些 URL 中的一个嵌入到生产应用程序中并冒着随时中断的风险可能不值得。不幸的是,这对第 3 方使用不开放。哦,好吧 很高兴为您提供帮助,对不起,我无法为您提供您希望的答案。如果您正在构建原生应用,您或许可以使用新的 ios SDK developers.facebook.com/docs/messenger/ios 调用该应用 奇数。我发现用户线程版本是唯一为我打开实际对话的版本,即fb-messenger://user-thread/user_id
其中user_id
是一个数字ID。 fb-messenger//user/...
版本打开了信使,但没有打开对话。我无法让任何用户或线程 ID 使用 fb-messenger://thread/...
表单。用户对话的桌面和移动浏览器等效项类似于 https://www.facebook.com/messages/user_id
或 https://m.facebook.com/messages/read/?fbid=user_id
当前 Facebook 网址是 fb-messenger-public://user-thread/ID
截至 2018 年 1 月,这对我不起作用。只是链接到 Messenger 中的一个空对话。【参考方案4】:
这一切都变了。 Facebook 发布短链接以连接品牌或用户的 Messenger 个人资料。直接链接方式为http://m.me/PROFILE或PAGE_NAME
如果您正在构建机器人,您还可以传入引荐参数。我已经写了很多关于这个linking in to Messenger conversations 的文章。
【讨论】:
【参考方案5】:很抱歉让这件事起死回生,但 Facebook Messenger 似乎已经整合了通用链接来快速打开 Messenger 应用程序。
m.me/$USERNAME
例如:http://m.me/zuck 会将您普遍链接到消息 Zuckerberg。
我玩了几个参数,但似乎没有任何东西可以预先填充消息。
【讨论】:
有谁知道使用 Facebook 用户 ID 而不是用户名的方法?将其与 Facebook ID 一起使用时,我收到“未找到用户名”:(以上是关于深度链接到 Facebook Messenger的主要内容,如果未能解决你的问题,请参考以下文章
深度链接 Facebook android / ios 问题