android - Esquemas URI personalizados para el Facebook Messenger
deep-linking facebook-messenger (4)
Dado el reciente " encouragement " de Facebook para migrar a una aplicación de mensajería por separado, y como seguimiento a la respuesta {¡muy informativa!} A la pregunta sobre los esquemas de URL / URI que admite la aplicación de Facebook , me he estado preguntando si la información con respecto a El protocolo personalizado de la aplicación de mensajería de Facebook de fb-messenger://
está disponible.
La funcionalidad que buscaba era la capacidad de hacer clic en un botón que abriera una ventana de chat de FB-messenger con el usuario cuyo ID numérico de Facebook es conocido. También es necesario que funcione si la aplicación de Facebook ( katana ) no está instalada en el dispositivo (es decir, solo el messenger, orca ).
Encontré un example de la vinculación profunda deseada ( fb-messenger://user-thread/{user-id}
), pero eso no parece funcionar. Me di cuenta de que FB tiene la tendencia de revisar los URI de vez en cuando, ya que generalmente se supone que no están disponibles para el público (por lo que yo entiendo).
Con la versión actual de Facebook en Android, pídale al usuario que abra la aplicación o abra Chrome cuando use su dominio www.messenger.com Es mejor redirigir al usuario a esta URL y dejar que Facebook lo maneje.
https://www.messenger.com/t/ {username-or-page-name-here}
Intent intent;
intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.messenger.com/t/{username-or-page-name-here}"));
startActivity(intent);
Después de buscar esta información sin éxito, decidí hacer una lista por mi cuenta. A continuación es lo que logré reunir hasta el momento, junto con algunas explicaciones:
Esto se actualiza para la versión 141.0.0.25.76 (21 de octubre de 2017) .
fb-messenger://accounts
fb-messenger://active_now
fb-messenger://addcard
fb-messenger://addmembers
fb-messenger://android_date_time
fb-messenger://android_storage
fb-messenger://autocompose
fb-messenger://autocompose_payment
fb-messenger://bots/get_started/?page_id=%s&cta_id=%s
fb-messenger://business
fb-messenger://business/
fb-messenger://business_extensions
fb-messenger://buy/mc?item_id={#%s}
fb-messenger://callsearch
fb-messenger://commerce/
fb-messenger://compose
fb-messenger://contactmigration
fb-messenger://contacts
fb-messenger://contacts/add_contacts
fb-messenger://contactuploadoptin
fb-messenger://direct_share
fb-messenger://drawoverotherapps
fb-messenger://games
fb-messenger://groupcompose
fb-messenger://groupstab
fb-messenger://groupthreadfbid/
fb-messenger://groupthreadfbid/%s
fb-messenger://ig_contact_import
fb-messenger://installupdate
fb-messenger://instant_article/?article_id=
fb-messenger://instant_article/?article_id=%s
fb-messenger://invite
fb-messenger://join_request
fb-messenger://mai
fb-messenger://messagerequests
fb-messenger://messagesearch
fb-messenger://montage
fb-messenger://montage_composer
fb-messenger://montage_mediapicker
fb-messenger://montageaudiencepicker
fb-messenger://montagecomposer
fb-messenger://networkempathy
fb-messenger://new
fb-messenger://newuser/
fb-messenger://newuser/signup?provider_name=%s&provider_page_fbid=%s
fb-messenger://nfc
fb-messenger://omni_m
fb-messenger://opengrouppreview
fb-messenger://opengrouppreview?group_preview_hash=
fb-messenger://optimistic
fb-messenger://optimistic/%s
fb-messenger://payments
fb-messenger://payments/
fb-messenger://platform
fb-messenger://platform/cta/postback/?cta_id=%s
fb-messenger://platform/share/?cta_id=%s
fb-messenger://ride_map/{%s}
fb-messenger://roomcompose
fb-messenger://rtccall
fb-messenger://sampleflows
fb-messenger://settings
fb-messenger://settings/datasaver
fb-messenger://settings/messengeronlybackup
fb-messenger://settings/montage
fb-messenger://settings/notifications
fb-messenger://settings/people
fb-messenger://settings/phoneevents
fb-messenger://settings/profilepicture
fb-messenger://settings/tincan
fb-messenger://share < Used for sharing multimedia, contains
several extras. See more info below.
fb-messenger://sms
fb-messenger://sms/
fb-messenger://sms/%s
fb-messenger://sms-bridge
fb-messenger://sms-takeover
fb-messenger://sms-takeover/nux?context=%s
fb-messenger://sms-takeover/nux?context=%s&thread_id=%s
fb-messenger://sms-takeover/sms_anonymous_chat_head
fb-messenger://stickerstore
fb-messenger://thread/ < Deprecated
fb-messenger://threadkeystring
fb-messenger://threads
fb-messenger://threadsettings
fb-messenger://user
fb-messenger://user/
fb-messenger://user/%s < Opens chathead/conversation with user %s, where
%s is the numeric fb user id. Using a username
string here crashes the orca app.
fb-messenger://user/%s?ref=%s&ref_source=%s
fb-messenger://verifyphonenux
fb-messenger://voip
fb-messenger://wave
Aquí hay algunos esquemas de URI cuyo propósito en esta aplicación no sé:
-
fb://
- vea posibles URIs de este esquema here . -
fb-work://
-
fbinternal://
-
fb-messenger-secure://
-
dialtone://
Investigación de fb-messenger://share
(de una versión anterior de esta publicación - puede no ser válida ):
- Tiene un
StringExtra
llamadoShareType
que puede ser:ShareType.invite
,ShareType.forward
,ShareType.regular
. - Tiene un
StringExtra
opcional (?)StringExtra
ShareType.invitedUser
. - Tiene un
StringExtra
opcional (?)StringExtra
ShareType.invitedUserDisplayName
. - Tiene un
StringExtra
opcional (?)StringExtra
ShareType.inviteEntryPoint
. - Tiene un
StringExtra
opcional (?)StringExtra
ShareType.invitesSentBroadcastAction
. - (varios otros)
En el caso de ShareType.forward
:
- Tiene un
Extra
con la etiqueta"attachment"
O"message"
. - Tiene un
Extra
con la etiqueta"trigger"
.
Campos Extra
de una acción Intent
(etiqueta: tipo ):
-
android.intent.extra.TEXT
: cadena -
attachment
: parcelable -
message
: Parcelable -
page_name
: String -
page_post_id
: String -
page_target
: largo -
send_as_message_entry_point
: String -
share_attachment_url
: String -
share_caption
: String -
share_description
: String -
share_fbid
: String -
share_link_url
: String -
share_media_url
: String -
share_return_to_fb4a
: Boolean -
share_robotext
: String -
share_story_url
: String -
share_title
: String -
ShareType
: String -
target_recipients
: StringArray -
title
: cadena -
trigger
: cadena
La funcionalidad requerida puede lograrse utilizando fb-messenger://user/{user-id}
lugar de fb-messenger://user-thread/{user-id}
.
Tenga en cuenta que {user-id}
es el ID numérico global del usuario (por ejemplo, para Zuck es 4
), que se puede obtener (a partir de noviembre de 2015) analizando el documento html que corresponde al nombre de usuario de la persona (por ejemplo, para Zuck es https://www.facebook.com/zuck
) y extrayendo el "entity_id"
que se encuentra dentro.
De acuerdo con mi última prueba, las ID de usuario de ámbito de aplicación , que normalmente son las ID disponibles para los desarrolladores, no funcionan para esto.
A continuación se muestra un script de python3 que extrae la ID global para un nombre de usuario conocido (crédito: 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()))
Alternativamente, este sitio puede ser usado para lograr lo mismo.
Tenga en cuenta que este método no es oficialmente compatible e incluso puede hacer que su aplicación sea prohibida por FB .
Esto simplemente comparte un enlace.
<a href="fb-messenger://share?link=encodedLink"></a>
Usando intenciones de Chrome para Android: el siguiente código abre FB messenger si está instalado. De lo contrario, se redirige a la URL alternativa.
<a href="intent://user/<yourid>/#Intent;scheme=fb-messenger;package=com.facebook.orca;S.browser_fallback_url=http://yourfllbackweburl;end"> Open Messenger</a>