深层链接到 Facebook Messenger
Deep linking to Facebook Messenger
通过大量搜索,我发现使用 fb-messenger://user-thread/ID
可用于深入 link 到 Messenger 并使用传入的 FB ID 打开现有线程,如果没有,则启动一个新线程存在的。
它弹出到 Messenger 并打开一个线程,但该线程与 Facebook User
并没有实际发送。见下图。单击 header 中的 Facebook 用户会转到包含正确用户图像和名称的详细信息视图。
如何使它正常工作?
作为WizKid (FB Employee) said here:
...there is no documented way to interact with ... [Messenger] so anything
you do may break at any second.
因此,考虑到这一点,听起来 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 URL 是 fb-messenger-public://user-thread/ID
很抱歉把它起死回生,但 Facebook Messenger 似乎已经整合了通用链接来快速打开 Messenger 应用程序。
m.me/$USERNAME
例如:http://m.me/zuck将普遍link你给扎克伯格发消息。
我尝试了几个参数,但似乎没有任何东西可以预先填充消息。
这一切都变了。 Facebook 发布了简短的 links 以连接品牌或用户的 Messenger 个人资料。指向link的方式是http://m.me/PROFILE或者PAGE_NAME
如果您正在构建机器人,您还可以传入一个推荐参数。我已经写了很多关于这个 linking in to Messenger conversations 的文章。
如果你想直接跳转到代码,这里是:
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"https://m.me/%ld", USER_ID]];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
使用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": "..."
}
}
]
}
]
}
通过大量搜索,我发现使用 fb-messenger://user-thread/ID
可用于深入 link 到 Messenger 并使用传入的 FB ID 打开现有线程,如果没有,则启动一个新线程存在的。
它弹出到 Messenger 并打开一个线程,但该线程与 Facebook User
并没有实际发送。见下图。单击 header 中的 Facebook 用户会转到包含正确用户图像和名称的详细信息视图。
如何使它正常工作?
作为WizKid (FB Employee) said here:
...there is no documented way to interact with ... [Messenger] so anything you do may break at any second.
因此,考虑到这一点,听起来 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 URL 是 fb-messenger-public://user-thread/ID
很抱歉把它起死回生,但 Facebook Messenger 似乎已经整合了通用链接来快速打开 Messenger 应用程序。
m.me/$USERNAME
例如:http://m.me/zuck将普遍link你给扎克伯格发消息。
我尝试了几个参数,但似乎没有任何东西可以预先填充消息。
这一切都变了。 Facebook 发布了简短的 links 以连接品牌或用户的 Messenger 个人资料。指向link的方式是http://m.me/PROFILE或者PAGE_NAME
如果您正在构建机器人,您还可以传入一个推荐参数。我已经写了很多关于这个 linking in to Messenger conversations 的文章。
如果你想直接跳转到代码,这里是:
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"https://m.me/%ld", USER_ID]];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
使用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": "..."
}
}
]
}
]
}