Je sais qu'il est possible de se connecter directement à une application dans iOS en enregistrant un schéma personnalisé (par exemple, donc: //). Il est également possible de se connecter à l'application dans l'appstore via iTunes.
Dans de nombreux cas, le flux idéal consiste à fournir un lien qui redirige vers l'application si elle est installée et vers le magasin si ce n'est pas le cas. Est-ce possible, et si oui comment?
Ajouté pour plus de clarté , le scénario est le suivant: j'ouvre un lien (http) depuis un e-mail sur mon iphone qui m'invite à rejoindre un groupe dans une application. Si l'utilisateur a installé l'application sur ce périphérique, elle devrait s'ouvrir, sinon le lien http devrait être redirigé vers iTunes.
Il n'y a aucun moyen de vérifier cela ..__ Cependant, il existe une solution de contournement de Nice.
L'idée est fondamentalement ceci:
Les 2 dernières étapes sont expliquées sur ce SO post
Je pense que la réponse la plus simple serait de configurer une page sur votre serveur avec le javascript suivant:
(function() {
var app = {
launchApp: function() {
window.location.replace("myapp://");
this.timer = setTimeout(this.openWebApp, 1000);
},
openWebApp: function() {
window.location.replace("http://itunesstorelink/");
}
};
app.launchApp();
})();
Cela tente essentiellement de rediriger vers votre application et définit un délai d'expiration pour la redirection vers l'App Store en cas d'échec.
Vous pouvez même rendre le code un peu plus intelligent et vérifier l'agent utilisateur pour voir s'il s'agit d'un utilisateur ios, Android ou d'un utilisateur Web, puis les rediriger de manière appropriée.
Si vous avez un lien vers une page Web à partir du courrier électronique avec la page Web contenant une iframe
avec le src
défini sur le modèle personnalisé pour votre application, iOS sera automatiquement redirigé vers cet emplacement dans l'application. Si l'application n'est pas installée, rien ne se passera. Cela vous permet de créer un lien profond dans l'application si elle est installée ou de rediriger vers l'App Store s'il n'est pas installé.
Par exemple, si l'application Twitter est installée et que vous accédez à une page Web contenant le balisage suivant, vous serez immédiatement dirigé vers l'application. Si l'application Twitter n'était pas installée, le texte "L'application Twitter n'est pas installée" s'affiche.
<!DOCTYPE html>
<html>
<head>
<title>iOS Automatic Deep Linking</title>
</head>
<body>
<iframe src="Twitter://" width="0" height="0"></iframe>
<p>The Twitter App is not installed</p>
</body>
</html>
Voici un exemple plus complet qui redirige vers l'App Store si l'application n'est pas installée:
<!DOCTYPE html>
<html>
<head>
<title>iOS Automatic Deep Linking</title>
<script src='//code.jquery.com/jquery-1.11.2.min.js'></script>
<script src='//mobileesp.googlecode.com/svn/JavaScript/mdetect.js'></script>
<script>
(function ($, MobileEsp) {
// On document ready, redirect to the App on the App store.
$(function () {
if (typeof MobileEsp.DetectIos !== 'undefined' && MobileEsp.DetectIos()) {
// Add an iframe to Twitter://, and then an iframe for the app store
// link. If the first fails to redirect to the Twitter app, the
// second will redirect to the app on the App Store. We use jQuery
// to add this after the document is fully loaded, so if the user
// comes back to the browser, they see the content they expect.
$('body').append('<iframe class="Twitter-detect" src="Twitter://" />')
.append('<iframe class="Twitter-detect" src="itms-apps://iTunes.com/apps/Twitter" />');
}
});
})(jQuery, MobileEsp);
</script>
<style type="text/css">
.Twitter-detect {
display: none;
}
</style>
</head>
<body>
<p>Website content.</p>
</body>
</html>
Ouais c'est assez facile. Pour cela, l'application que vous souhaitez ouvrir doit avoir un schéma d'URL déclaré dans le plist:
//if you can open your app
if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"yourapp://"]])
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"yourapp://"]];
}
else
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"ituneappstorelink"]];
}
"Smart App Banners" - pas sûr de savoir quand ils sont arrivés, mais après avoir trouvé ce post cherchant la même chose, puis Smart App Banners, ceci est un suivi.
Les bannières Smart App sont une méta-balise HTML d'une seule ligne dans l'en-tête de chaque page que vous souhaitez offrir à votre application sur le Web:
<meta name="Apple-iTunes-app" content="app-id=myAppStoreID, affiliate-data=myAffiliateData, app-argument=myURL">
qui montre cette icône en haut de la page et "Ouvrir cette page dans" avec l'application ou le routage vers l'App Store.
Les métadonnées de cette page sur l'iPhone se présentent comme suit (anonymisées bien entendu):
<meta name="Apple-iTunes-app" content="app-id=605841731, app-argument=lync://confjoin?url=https://meet.rtc.yourcorporatedomain.com/firstName.lastName/conferenceID">
Documentation pour les développeurs Apple - Promotion des applications avec des bannières Smart App
Il y a peu d'étapes simples pour réaliser cette action
Étape 1
Aller -> Projet (sélectionner la cible) -> info -> Types d'URL
Créer un schéma d'URL dans Xcode
Ici, le schéma d'URL est myApp (il est préférable d'avoir tout le caractère en minuscule).
Étape 2
Configurez délégué si vous prévoyez de recevoir des paramètres/chaînes de requête à partir d'une URL.
Voici le code:
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
NSLog(@"APP : simple action %@",url.scheme);
if ([url.scheme hasPrefix:@"myapp"]) {
NSLog(@"APP inside simple %@",url.absoluteString);
NSURLComponents *urlComponents = [NSURLComponents componentsWithURL:url
resolvingAgainstBaseURL:NO];
NSArray *queryItems = urlComponents.queryItems;
NSString * abc = [self valueForKey:@"abc"
fromQueryItems:queryItems];
NSString * xyz = [self valueForKey:@"xyz"
fromQueryItems:queryItems];
NSLog(@"Sid up = %@", abc);
NSLog(@"PID up = %@", xyz);
// you can do anything you want to do here
return YES;
}
return NO;
}
Fin du travail côté Xcode.
Étape 3
En faisant référence ici au code @BananaNeil, je ne suis pas un gars
(function() {
var app = {
launchApp: function() {
window.location.replace("myApp://share?abc=12&xyz=123");
this.timer = setTimeout(this.openWebApp, 1000);
},
openWebApp: function() {
window.location.replace("http://itunesstorelink/");
}
};
app.launchApp();
})();
J'espère que cela vous aidera tous
Il y a un grand nombre de cas complexes dans Edge, donc la solution la plus simple consiste à laisser quelqu'un d'autre s'occuper de cela.
C’est ce que https://branch.io/ do . Vous pouvez utiliser leur forfait gratuit pour obtenir exactement ce que vous voulez, avec quelques fonctions supplémentaires.
Je ne suis pas affilié à Branch.io, mais j'utilise leur produit.