Schemi URI personalizzati per il Messenger di Facebook

Data la recente " incoraggiamento " di Facebook per la migrazione a un'applicazione messaggistica separata e come follow-up alla risposta (molto informativa!) Alla domanda sugli schemi URL / URI supportti dall'app Facebook , mi chiedo se le informazioni riguardanti è disponibile il protocollo personalizzato di messaggistica di messaggistica Facebook di fb-messenger:// .

La funzionalità che stavo cercando era una possibilità di fare clic su un button che apre una window di messaggistica FB-messaggistica con l'utente il cui ID Facebook numbersco è conosciuto. Questo whereva anche funzionare se l'applicazione di Facebook ( katana ) non è installata sul dispositivo (cioè solo il messaggero, orca ).

  • Come aggiornare ListView in caso di utilizzo di CursorAdapter?
  • Android Drawable vs Asset in performance di caricamento delle immagini
  • Integrazione YouTube di YouTube, rimozione del logo di YouTube
  • Come funziona il GCM? (google cloud messaging per Android)
  • I disegni di background definiscono la dimensione della vista
  • Errore di installazione: INSTALL_FAILED_MEDIA_UNAVAILABLE?
  • Ho trovato un esempio del collegamento profondo desiderato ( fb-messenger://user-thread/{user-id} ), ma questo non sembra funzionare. Mi sono reso conto che la FB ha una tendenza a rivedere gli URI each tanto, in quanto in genere non dovrebbero essere disponibili al pubblico (per quanto ne capisco).

  • Come: Comandi vocali in un'applicazione android
  • Come select dynamicmente il text da EditText OnClickListener?
  • Esecuzione di semplici test JUnit su Android Studio (IntelliJ) quando si utilizza una configuration basata su Gradle
  • Impedire che il cromo Android non sia inattivo / auto bloccante / telefono a dormire?
  • Aumenta la spaziatura della griglia in android
  • Google Cloud Messaging - i messaggi a volte non vengono ricevuti finché lo stato di networking non è stato modificato
  • 3 Solutions collect form web for “Schemi URI personalizzati per il Messenger di Facebook”

    Dopo aver cercato senza successo queste informazioni, ho deciso di fare un elenco dei miei. Di seguito trovo quello che ho riuscito a raccogliere fino ad ora, insieme ad alcune spiegazioni:

    Questo viene aggiornato per la versione 39.0.0.23.150 (14 ottobre 2015) .

     fb-messenger://android_storage fb-messenger://callsearch fb-messenger://compose fb-messenger://contacts fb-messenger://contactuploadoptin fb-messenger://conversationrequests fb-messenger://groupcompose fb-messenger://groupthreadfbid/ fb-messenger://groupthreadfbid/%s fb-messenger://installupdate fb-messenger://invite fb-messenger://payments/addcard fb-messenger://payments/settings fb-messenger://rtccall fb-messenger://settings fb-messenger://settings/dataandstorage fb-messenger://settings/notifications fb-messenger://settings/profilepicture fb-messenger://share < Used for sharing multimedia, contains //several extras. See more info below. fb-messenger://stickerstore fb-messenger://subscribe fb-messenger://thread/ < Deprecated fb-messenger://threads fb-messenger://threadsettings fb-messenger://user/ fb-messenger://user/%s < Opens chathead/conversation with user %s //where %s is the user number. Using a text //string (eg username) crashes the orca app. fb-messenger://verifyphonenux fb-messenger-sametask://share fb-messenger-secure://rtccall/audio/%s fb-messenger-secure://rtccall/video/%s 

    Ecco alcuni schemi URI il cui scopo in questa applicazione non so:

    • fb:// – vedere i possibili URI di questo schema qui .
    • fb-work://
    • fbinternal://
    • fb-messenger-secure://
    • dialtone://

    L' fb-messenger://share di fb-messenger://share (dalla versione precedente di questo post – può essere invalidata ):

    • Ha una StringExtra denominata ShareType che può essere: ShareType.invite , ShareType.forward , ShareType.regular .
    • Ha uno StringExtra opzionale (?) StringExtra ShareType.invitedUser .
    • Ha uno StringExtra chiamato ShareType.invitedUserDisplayName .
    • Ha uno StringExtra opzionale (?) StringExtra ShareType.inviteEntryPoint .
    • Ha uno StringExtra chiamato ShareType.invitesSentBroadcastAction .
    • (molti altri)

    Nel caso di ShareType.forward :

    • Ha un Extra con il tag "attachment" O "message" .
    • Ha un Extra con il tag "trigger" .

    Campi Extra di una azione Intent (tag: tipo ):

    • android.intent.extra.TEXT : Stringa
    • attachment : Parcelable
    • message : Parcelable
    • page_name : String
    • page_post_id : Stringa
    • page_target : lungo
    • send_as_message_entry_point : String
    • share_attachment_url : String
    • share_caption : String
    • share_description : Stringa
    • share_fbid : String
    • share_link_url : String
    • share_media_url : String
    • share_return_to_fb4a : Booleano
    • share_robotext : String
    • share_story_url : String
    • share_title : String
    • ShareType : String
    • target_recipients : StringArray
    • title : String
    • trigger : string

    La funzionalità richiesta può essere ottenuta usando fb-messenger://user/{user-id} anziché fb-messenger://user-thread/{user-id} .

    Si noti che {user-id} è l' ID numbersco globale dell'utente (ad esempio per Zuck è 4 ), che può essere ottenuto (a partire da novembre 2015) analizzando il documento html corrispondente al nome utente della persona (ad esempio per Zuck it's https://www.facebook.com/zuck ) ed estraendo l' "entity_id" che si trova all'interno.

    Secondo il mio ultimo test, gli ID utente app-scopi , che di solito sono gli ID disponibili agli sviluppatori, non funzionano per questo!

    Di seguito è uno script python3 che estrae l'ID globale per un nome utente noto (credito: Paul Schreiber ):

     #!/usr/bin/python import requests import re url = 'https://www.facebook.com/zuck' idre = re.compile('"entity_id":"([0-9]+)"') page = requests.get(url) print(idre.findall(page.content.decode())) 

    In alternativa, questo sito può essere utilizzato per get la stessa cosa.

    Tieni presente anche che questo metodo non è ufficialmente supportto e potrebbe anche impedire all'applicazione di essere bloccato da FB .

    Questo semplicemente condividere un collegamento

     <a href="fb-messenger://share?link=encodedLink"></a> 

    Utilizzo degli intenti cromati per Android: Il codice riportto di seguito apre il messaggista FB se installato. Altro reindirizza all'URL di fallback.

     <a href="intent://user/<yourid>/#Intent;scheme=fb-messenger;package=com.facebook.orca;S.browser_fallback_url=http://yourfllbackweburl;end"> Open Messenger</a> 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.