2016-10-18 5 views
4

Я внедрил процедуру отправки ссылки + контента в facebook messenger через свой API MessageDialog. Мне удалось получить содержимое ссылки в диалоговом окне сообщения, но кнопка отправки отключена. Я думаю, что это скорее проблема конфигурации, чем что-либо еще.Facebook iOS Message Dialog Кнопка отправки отключена

Я реализовал это в iam с xamarin с новейшим 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> 

где {мой-фб-приложение-идентификатор} был заменен на мой Facebook app id и {my-fb-app-name} с именем приложения.

Я также:

  1. проверил, что мой идентификатор расслоения точно такие же строки, как один я клал конфигурацию facebook приложения;

  2. добавил домен ссылки, которую я отправляю в качестве домена приложения в конфигурации приложения facebook;

  3. добавил домен ссылки, которую я отправляю в качестве платформы веб-сайта;

  4. интегрировали приложение делегата мое приложение с одним из Facebook, с помощью следующего кода:

    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); 
    } 
    

Любая помощь будет оценена. Спасибо!

ответ

3

Итак, facebook фактически блокировал мой URL. Все работает отлично с другими URL-адресами.

После некоторых глубоких экспериментов с API MessageDialog мы обнаружили, что facebook ожидает, что URL-адрес будет общим, чтобы вернуть правильный результат HTML-контента с статусом HTTP 200. URL-адрес, который я использовал, фактически возвращал статус 302, перенаправляя пользователя на страницу с ошибкой. Таким образом, это поведение не принимается в качестве общего контента в facebook.

Это похоже на этот тип поведения. То, что меня обмануло, было то, что facebook в порядке, если я использую один и тот же контент с помощью Android Intent.

В любом случае, теперь все работает нормально.

Надеюсь, это поможет любому, у кого есть такая же проблема!

Cheers!

+0

так есть способ отправить сообщение без URL (просто текстовое сообщение) в iOS, что возможно в android, кстати, – Rakii

+0

@Rakii, я боюсь, что не с API-интерфейсом Message Dialog. Для этого вам нужно будет использовать API-интерфейс отправки (https://developers.facebook.com/docs/messenger-platform/send-api-reference#request;) –

 Смежные вопросы

  • Нет связанных вопросов^_^