深层链接到Facebook Messenger

从大量的search中,我发现使用fb-messenger://user-thread/ID可以深度链接到Messenger,并用传入的FB ID打开现有的线程,或者在不存在的情况下启动一个新的线程。

它popup到Messenger并打开一个线程,但该线程与Facebook User并没有实际发送。 看下面的图片。 单击标题中的Facebook用户将转到具有正确用户图像和名称的详细视图。

我如何使这个工作正确?

正如WizKid (FB员工) 在这里所说:

…没有文件logging的方式来与[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已被replace为fb-messenger://user/ID

还有一条线是:

 return Uri.parse((new StringBuilder("fb-messenger://thread/")).append(Uri.encode(s)).toString()); 

所以fb-messenger://thread/ID也可能是有效的。 ID可能是一个用户或线程ID,我没有足够深入的发现。

编辑:目前的Facebookurl是fb-messenger-public://user-thread/ID

对不起,从死里复活,但似乎Facebook Messenger已合并通用链接快速打开Messenger应用程序。

 m.me/$USERNAME 

例如: http : //m.me/zuck将通用链接你的消息扎克伯格。

我玩了几个参数,但似乎并没有预先填好这个消息。

所有这一切都改变了。 Facebook发布了短链接来与品牌或用户的Messengerconfiguration文件进行连接。 直接链接的方式是http://m.me/PROFILE或PAGE_NAME

如果您正在构build漫游器,则还可以传递引荐参数。 我已经写了一些关于这个连接到Messenger对话 。

请检查您是否正确设置您的深层链接url,根据Dev-iL的以下回答

PS:请注意,他的答案被标记为Android,但我怀疑URLscheme将不会有很大的不同,从iOS的。

如果你想直接跳转到代码,这里是:

 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 web hook负载中的收件人ID中获取了我的ID 。 例如

{ "object": "page", "entry": [ { "id": "1163189980393936", "time": 1500325170682, "messaging": [ { "sender": { "id": "" }, "recipient": { "id": "ID" }, "timestamp": 1500325170640, "message": { "mid": "mid.$cAAQh6kd9svBjg56V0FdUllNamImF", "seq": 2888, "text": "..." } } ] } ] }