Comment testez-vous un lien dynamique ou une invitation? Existe-t-il une commande adb qui peut être exécutée et comment ce lien sera-t-il généré?.
J'ai essayé (avec différentes variations)
adb Shell am start -W -a Android.intent.action.VIEW -d "https://play.google.com/store/apps/details?id=com.gonevertical.chatterbox\\&pcampaignid=appinvite_\\&referrer=deep_link_id%3Dhttps://gonevetical.com/chatterbox/invite/group/-KJnkQfRjZfAH9-U_U4a%26invitation_id%3D20832144509-9642991a-de62-4d40-ba93-b991208c2d31" com.gonevertical.chatterbox
Le projet https://github.com/branflake2267/chatterbox/blob/master/Android/app/src/main/AndroidManifest.xml
Avant de commencer à tester, vous devriez:
build.gradle
au niveau de l'application:Fichier de classement:
compile 'com.google.firebase:firebase-invites:9.0.2'
Construisez une Intent
en utilisant la classe AppInviteInvitation.IntentBuilder:
private void onInviteClicked() {
Intent intent = new AppInviteInvitation.IntentBuilder(getString(R.string.invitation_title))
.setMessage(getString(R.string.invitation_message))
.setDeepLink(Uri.parse(getString(R.string.invitation_deep_link)))
.setCustomImage(Uri.parse(getString(R.string.invitation_custom_image)))
.setCallToActionText(getString(R.string.invitation_cta))
.build();
startActivityForResult(intent, REQUEST_INVITE);
}
Le lancement de l'intention AppInviteInvitation
ouvre le sélecteur de contacts dans lequel l'utilisateur sélectionne les contacts à inviter. Les invitations sont envoyées par courrier électronique ou SMS. Une fois que l'utilisateur a choisi les contacts et envoyé l'invitation, votre application reçoit un rappel à onActivityResult
:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d(TAG, "onActivityResult: requestCode=" + requestCode + ", resultCode=" + resultCode);
if (requestCode == REQUEST_INVITE) {
if (resultCode == RESULT_OK) {
// Get the invitation IDs of all sent messages
String[] ids = AppInviteInvitation.getInvitationIds(resultCode, data);
for (String id : ids) {
Log.d(TAG, "onActivityResult: sent invitation " + id);
}
} else {
// Sending failed or it was canceled, show failure message to the user
// ...
}
}
}
Lorsqu'un utilisateur reçoit une invitation, s'il ne l'a pas encore installée, il peut choisir de l'installer à partir du Google Play Store. Ensuite, une fois l'application installée, ou si l'application était déjà installée, l'application démarre et reçoit l'URL de son contenu, si vous en avez envoyé une. Pour recevoir l'URL du contenu de votre application, appelez la méthode getInvitation
:
@Override
protected void onCreate(Bundle savedInstanceState) {
// ...
// Create an auto-managed GoogleApiClient with access to App Invites.
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(AppInvite.API)
.enableAutoManage(this, this)
.build();
// Check for App Invite invitations and launch deep-link activity if possible.
// Requires that an Activity is registered in AndroidManifest.xml to handle
// deep-link URLs.
boolean autoLaunchDeepLink = true;
AppInvite.AppInviteApi.getInvitation(mGoogleApiClient, this, autoLaunchDeepLink)
.setResultCallback(
new ResultCallback<AppInviteInvitationResult>() {
@Override
public void onResult(AppInviteInvitationResult result) {
Log.d(TAG, "getInvitation:onResult:" + result.getStatus());
if (result.getStatus().isSuccess()) {
// Extract information from the intent
Intent intent = result.getInvitationIntent();
String deepLink = AppInviteReferral.getDeepLink(intent);
String invitationId = AppInviteReferral.getInvitationId(intent);
// Because autoLaunchDeepLink = true we don't have to do anything
// here, but we could set that to false and manually choose
// an Activity to launch to handle the deep link here.
// ...
}
}
});
}
IMPORTANT: Le code ci-dessus nécessite un GoogleApiClient avec AppInvite.API
activé.
Si le paramètre launchDeepLink
est true
, l'application est automatiquement relancée avec l'URL du contenu de votre application, que votre application peut gérer normalement. Si le paramètre launchDeepLink
est false
, vous pouvez démarrer manuellement l'intention renvoyée par getInvitationIntent pour gérer l'URL, le cas échéant.
Voici plus d'informations sur hot to Envoyer et recevoir des invitations Firebase depuis votre application Android .
Vous pouvez également utiliser la fonctionnalité Deep Link Testing pour Android Studio version 2.x pour vérifier que votre application peut être lancée avec une URL spécifiée. Pour le configurer, sélectionnez d’abord Exécuter> Modifier les configurations dans la section Application Android> Général. Pour tester une URL HTTP, sélectionnez Lien profond dans les Options de lancement, puis entrez l'URL à tester. Si le lien est réussi, l'application doit être lancée dans l'émulateur ou sur le périphérique connecté. Sinon, un message d'erreur apparaît dans la fenêtre Run.
Pont de débogage Android
Vérifiez que vos liens ouvrent votre application à l'aide du pont de débogage Android, où {URL}
représente l'URL HTTP déclarée dans le manifeste de votre application.
adb Shell am start -a Android.intent.action.VIEW -d "{URL}" com.example.Android
Sur lien , vous trouverez plus d'informations sur la manière de tester votre implémentation.
Je les ai testés en générant les liens dans la console FireBase, en copiant le (s) lien (s) dans un courrier électronique, en ouvrant le courrier électronique dans un périphérique et en cliquant sur les liens correspondants. Vous pouvez vérifier l'application de cette façon.
Si vous souhaitez déboguer les liens, procédez de la même manière, mais copiez le lien complet dans un courrier électronique, et non le court-métrage, et testez des variantes du lien complet.
J'ai trouvé le ci-dessous dans un lien posté dans le commentaire de la réponse gagnante bounty. Il vous permet de recevoir une invitation et de tester votre code de gestion d'une nouvelle installation à partir d'une invitation.
Pour simuler la réception d'une invitation d'un ami, vous pouvez vous envoyer une invitation, désinstaller l'application de test, puis cliquer sur le lien contenu dans votre courrier électronique.
Cela vous enverrait normalement sur le Play Store ou sur l'App Store pour télécharger l'application. Comme il s'agit d'une application de test, il sera lié à une page de magasin inexistante.
Après avoir cliqué sur le lien d'invitation, réinstallez l'application et exécutez-la sur votre appareil ou votre émulateur, puis consultez l'invitation récupérée du côté destinataire.
J'ai juste aimé staackuser2, avec une mention. Vous pouvez publier votre application sur Google Play fermé Alpha/Beta. Ajoutez-vous et un autre compte de messagerie à la liste des testeurs. Ainsi, l'application sera visible sur Google Play pour les deux appareils enregistrés en tant que testeurs. Vous pouvez ensuite envoyer des invitations entre les deux comptes. En cliquant sur le lien dans l'e-mail, vous accéderez à l'application sur l'App Store. Si vous l'installez, vous pouvez vérifier l'ID d'invitation (et d'autres informations possibles sur les liens profonds, telles que le code promotionnel, etc.) au démarrage de l'application.