J'écris une application pour une conférence Open Source.
À l’origine, chaque participant recevrait un lien différent par courrier électronique ou SMS, comme
https://example.com/?token=fccfc8bfa07643a1ca8015cbe74f5f17
puis utilisez ce lien pour ouvrir l'application, nous pouvons savoir quel utilisateur est le participant par le jeton.
Firebase publie une nouvelle fonctionnalité Dynamic Links dans I/O 2016, qui offre une meilleure expérience aux utilisateurs.
J'avais essayé cela, mais je ne trouvais aucun moyen de passer les paramètres personnalisés (le jeton) dans les liens dynamiques, comment utiliser le même lien avec des paramètres différents pour mes utilisateurs?
Merci.
Je ne pense pas que vous puissiez utiliser l'URL courte: https://<my app>.app.goo.gl/Gk3m
À moins d'en créer une pour chaque utilisateur, mais vous pouvez utiliser l'URL longue: https://<my app>.app.goo.gl/?link=https://example.com/?token=fccfc8bfa07643a1ca8015cbe74f5f17 ...(add other parameters as needed)
Et définir un nouveau jeton pour chaque utilisateur.
Je suppose que vous générez les jetons automatiquement. Dans ce cas, vous pouvez utiliser this pour raccourcir les liens.
Vous pouvez désormais créer des liens courts à l'aide du SDK Firebase via FirebaseDynamicLinks.getInstance().createDynamicLink()
: https://firebase.google.com/docs/dynamic-links/Android/create
Exemple de code:
Task shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLink(Uri.parse("https://example.com/"))
.setDynamicLinkDomain("abc123.app.goo.gl")
// Set parameters
// ...
.buildShortDynamicLink()
.addOnCompleteListener(this, new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
if (task.isSuccessful()) {
// Short link created
Uri shortLink = task.getResult().getShortLink();
Uri flowchartLink = task.getResult().getPreviewLink();
} else {
// Error
}
}
});
Si vous souhaitez utiliser des liens dynamiques avec des arguments personnalisés avec REST, voici un exemple de charge utile:
{
"dynamicLinkInfo": {
"dynamicLinkDomain": "example.app.goo.gl",
"link": "http://someurl.com?my_first_param=test&my_second_param=test2"
},
"suffix": {
"option":"UNGUESSABLE"
}
}
Assurez-vous que votre suppression «https: //» de votre dynamicLinkDomain
Julien
Vous pouvez ajouter un paramètre supplémentaire à votre lien pour générer une URL courte à partir de Firebase . Voici un exemple de génération d'URL courte à l'aide de l'API Firebase .
String url = "https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=YOUR_KEY";
try {
PackageManager manager = this.getPackageManager();
PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0);
JSONObject jsonObject = new JSONObject();
JSONObject androidInfoObject = new JSONObject();
androidInfoObject.put("androidPackageName", getApplicationContext().getPackageName());
androidInfoObject.put("androidMinPackageVersionCode",String.valueOf(info.versionCode));
JSONObject iosInfoObject = new JSONObject();
iosInfoObject.put("iosBundleId", "tettares.Test_ID");
JSONObject dynamicLinkInfoObj = new JSONObject();
dynamicLinkInfoObj.put("dynamicLinkDomain", "wgv3v.app.goo.gl");
dynamicLinkInfoObj.put("link", "https://test.in/?UserId=14&UserName=Naveen"); // Pass your extra paramters to here
dynamicLinkInfoObj.put("androidInfo", androidInfoObject);
dynamicLinkInfoObj.put("iosInfo", iosInfoObject);
JSONObject suffixObject = new JSONObject();
suffixObject.put("option" , "SHORT");
jsonObject.put("dynamicLinkInfo", dynamicLinkInfoObj);
jsonObject.put("suffix", suffixObject);
Log.d("JSON Object : " , jsonObject.toString());
new ServiceRequestHelper(this).PostCall(url, jsonObject, false, new CallBackJson() {
@Override
public void done(JSONObject result) throws JSONException {
try {
if (result.has("shortLink")) {
DEEP_LINK_URL = result.getString("shortLink"); }
} catch(Exception e)
{
e.printStackTrace();
}
}
});
} catch (JSONException | PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
Dans votre activité de réception:
boolean autoLaunchDeepLink = false;
AppInvite.AppInviteApi.getInvitation(mGoogleApiClient, this, autoLaunchDeepLink)
.setResultCallback(
new ResultCallback<AppInviteInvitationResult>() {
@Override
public void onResult(@NonNull AppInviteInvitationResult result) {
if (result.getStatus().isSuccess()) {
// Extract deep link from Intent
Intent intent = result.getInvitationIntent();
String deepLink = AppInviteReferral.getDeepLink(intent);
// Handle the deep link. For example, open the linked
// content, or apply promotional credit to the user's
// account.
// [START_EXCLUDE]
// Display deep link in the UI
Log.d(TAG, "deeplink URL: " + deeplink); // Here you get https://test.in/?UserId=14&UserName=Naveen
// [END_EXCLUDE]
} else {
Log.d(TAG, "getInvitation: no deep link found.");
}
}
});
Pas besoin de toute la hâte
Écrivez les liens comme ceci.
String link = " https://APP_CODE.app.goo.gl/?refferer= " + userId;
//APP_CODE is firebase link
Intent intent = new AppInviteInvitation.IntentBuilder(getString(R.string.invitation_title))
.setMessage(getString(R.string.invitation_custom_message)))
.setDeepLink(Uri.parse(link))
.setCustomImage(Uri.parse(getString(R.string.invitation_custom_image)))
.setCallToActionText(getString(R.string.invitation_cta))
.build();
startActivityForResult(intent, REQUEST_INVITE);
1 Commencez par modifier votre lien dynamique dans la console firebase de http: // exampleandroid/test à http: // exampleandroid/test? Data 2. Vous envoyez les données du paramètre de requête avec cette
DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
// .setLink(dynamicLinkUri)
.setLink(Uri.parse("http://exampleandroid/test?data=dsads"))
.setDomainUriPrefix("https://App_Name.page.link")
// Open links with this app on Android
.setAndroidParameters(new DynamicLink.AndroidParameters.Builder().build())
// Open links with com.example.ios on iOS
.setIosParameters(new DynamicLink.IosParameters.Builder("com.appinventiv.ios").build())
.buildDynamicLink();
dynamicLinkUri = dynamicLink.getUri();
J'ai essayé tout ce qui précède mais aucun travail. Donc, je pense que vous devriez changer le lien http://example.com/?userid=123
tohttp://example.com/userid/123