j'ai essayé link1 , link2 , link3 , link4 , link5 , link6
Voici tout ce qui est décrit à propos de DeepLinking
Ce que je veux, c’est l’application personnalisée uri myapp: // some_data, ouvre l’application native installée sur le périphérique qui nécessite some_data pour initialiser l’application.
Il existe 2 scénarios dans lesquels l’URL personnalisée peut être cliquée.
1) depuis l’application SMS, lorsque l’utilisateur clique sur le lien, il doit ouvrir automatiquement l’installé, sinon il ouvre le magasin Google Play où est hébergée l’application
2) dans le corps d'un message électronique.
J'ai essayé tous les liens ci-dessus, mais aucun ne fonctionne pour moi. J'ai de gros problèmes avec la partie schéma.
Voici mon AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<uses-sdk
Android:minSdkVersion="8"
Android:targetSdkVersion="18" />
<application
Android:allowBackup="true"
Android:icon="@drawable/ic_launcher"
Android:label="@string/app_name"
Android:theme="@style/AppTheme" >
<activity
Android:name="MainActivity"
Android:label="@string/app_name"
Android:exported="true" >
<intent-filter>
<action Android:name="Android.intent.action.VIEW" />
<category Android:name="Android.intent.category.BROWSABLE" />
<category Android:name="Android.intent.category.DEFAULT" />
<data Android:scheme="inderbagga" />
</intent-filter>
</activity>
</application>
et voici le MainActivity.Java
TextView tvText=(TextView)findViewById(R.id.tvid);
if (getIntent().getAction() == Intent.ACTION_VIEW&&getIntent().getScheme().equals("inderbagga")) {
Toast.makeText(getApplicationContext(), ""+getIntent().getScheme(), Toast.LENGTH_SHORT).show();
Uri uri = getIntent().getData();
// do stuff with uri
tvText.setText(uri.toString());
}
else tvText.setText("NULL");
Pour être plus précis, je veux ouvrir l’application native lorsque l’url du type inderbagga: // a1b22c333 est cliqué, à partir de l’application sms ou du corps du message électronique gmail/yahoomail.
afin d'atteindre le même objectif, j'ai utilisé des filtres d'intention pour définir le schéma. et getIntent () pour lire les données correspondant à a1b22c333 dans MainActivity.
cliquez sur le lien signifie que ce code fonctionnera
<intent-filter>
<action Android:name="Android.intent.action.VIEW" />
<category Android:name="Android.intent.category.DEFAULT" />
<category Android:name="Android.intent.category.BROWSABLE" />
<data Android:scheme="http"
Android:Host="domain.com(google.com)"Android:pathPrefix="/wp/poc1/(sufexes)" />
</intent-filter>
obtenir des données d'URL
//get uri data
Uri data = getIntent().getData();
//get schma
String scheme = data.getScheme(); // "http"
//get server name
String Host = data.getHost(); // Ipaddress or domain name
//get parameter
String urltextboxname=data.getQueryParameter("name");
//set value in textview
name.setText(urltextboxname);
Pour être plus précis, je veux ouvrir l’application native lorsque l’url du type inderbagga: // a1b22c333 est cliqué, à partir de l’application sms ou du corps du message électronique gmail/yahoomail.
Il existe de nombreux SMS et applications de messagerie disponibles pour Android. Aucun d’entre eux ne sait exactement comment convertir inderbagga://a1b22c333
en entrées cliquables. Vous pouvez créer une liste de toutes ces applications, contacter chacune des équipes de développement et leur demander de l'ajouter.
Vous pouvez également demander à votre application de rechercher plutôt une URL http://
particulière. Même si un sélecteur est présenté à l’utilisateur, il est au moins possible de cliquer sur cette URL dans votre application ou un navigateur Web.
Vous pouvez également essayer cette bibliothèque qui facilite la déclaration de liens profonds et l'extraction des paramètres dont vous avez besoin:
https://github.com/airbnb/DeepLinkDispatch
Il vous permet de déclarer l'URI qui vous intéresse et le paramètre que vous souhaitez extraire par des annotations, sans avoir à analyser vous-même.
Il semble que le problème que vous rencontrez est que votre courrier électronique et votre client SMS n'analysent pas correctement le schéma d'URI et le chemin d'accès. La plupart ne vous permettent pas d'entrer directement dans un schéma d'URI. De plus, si l'application n'est pas installée, vous devez vous replier sur le Play Store afin que l'utilisateur dispose d'une bonne expérience.
Pour ce faire, vous devez appeler le schéma d'URI dans JS côté client. Vous pouvez configurer un hôte Web simple et utiliser ce script:
<script type="text/javascript">
window.onload = function() {
var method = 'iframe';
var fallbackFunction = function() {
if (method == 'iframe') {
window.location = "market://details?id=your.package.name";
}
};
var addIFrame = function() {
var iframe = document.createElement("iframe");
iframe.style.border = "none";
iframe.style.width = "1px";
iframe.style.height = "1px";
iframe.src = "inderbagga://a1b22c333";
document.body.appendChild(iframe);
};
var loadChromeIntent = function() {
method = 'intent';
document.location = "intent://a1b22c333#Intent;scheme= inderbagga;package=your.package.name;end";
};
if (navigator.userAgent.match(/Chrome/) && !navigator.userAgent.match("Version/")) {
loadChromeIntent();
}
else if (navigator.userAgent.match(/Firefox/)) {
window.location = "inderbagga://a1b22c333";
}
else {
addIFrame();
}
setTimeout(fallbackFunction, 750);
};
</script>
Ou, vous pouvez utiliser un service tel que branch.io qui assemble automatiquement ce JS côté client en plus de travailler sur le bureau et sur iOS.