我已经实现了例程,通过MessageDialog API向facebook messenger发送链接+内容。我设法让链接内容出现在消息对话框中,但是发送按钮被禁用。我认为这比配置问题更重要。
我已经在xamarin本地ios中使用最新的xamarin facebook sdk(v 4.15.1)实现了这一点,我正在使用sdk 10.0进行编译。
这是一个非常基本的实现:
public bool SendMessageViaMessenger(string Text, string Link) {
var content = new ShareLinkContent();
content.SetContentUrl(new NSUrl(Link));
content.ContentTitle = "Here is an invite";
content.ContentDescription = "Test description";
MessageDialog.Show(content, null);
return true;
}
这是我的Info.plist facebook配置部分:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb{my-fb-app-id}</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>{my-fb-app-id}</string>
<key>FacebookDisplayName</key>
<string>{my-fb-app-name}</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>whatsapp</string>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
其中{my-fb-app-id}已替换为我的Facebook应用ID,{my-fb-app-name}替换为应用名称。
我也有:
检查我的包标识符是否与我在facebook应用配置中使用的字符串完全相同;
在facebook app配置中添加了我作为App Domain发送的链接的域名;
添加了我作为网站平台发送的链接的域名;
通过以下代码将我的应用程序的app委托与facebook中的app委托集成:
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init();
LoadApplication(new App());
Facebook.CoreKit.ApplicationDelegate.SharedInstance.FinishedLaunching(app, options);
return base.FinishedLaunching(app, options);
}
任何帮助将不胜感激。 谢谢!
答案 0 :(得分:3)
所以,facebook实际上只是阻止了我的网址。 其他网址一切正常。
在对MessageDialog API进行了一些深入的实验之后,我们发现facebook希望共享的url能够以HTTP 200状态返回正确的HTML内容结果。我分享的网址实际上是回复302状态,将用户重定向到错误页面。因此,这种行为不被Facebook接受为可共享的内容。
这种行为确实有意义。让我感到困惑的是,如果我通过Android Intent共享相同的内容,facebook就可以了。
无论如何,现在一切正常。
希望这可以帮助任何有同样问题的人!
干杯!