Przekierowanie do aplikacji, jeśli jest zainstalowana, w przeciwnym razie do App Store
Wiem, że można połączyć się bezpośrednio z aplikacją w iOS rejestrując Niestandardowy schemat (np. so://), a także można połączyć się z aplikacją w appstore przez itunes.
W wielu przypadkach idealnym rozwiązaniem jest dostarczenie linku, który przekieruje do aplikacji , Jeśli jest zainstalowana, i do sklepu, jeśli nie. Czy to możliwe, a jeśli tak, to w jaki sposób?
Dodano dla jasności , scenariusz jest taki, że otwieram link (http) z e-maila na moim iPhonie, który mnie zaprasza aby dołączyć do grupy w aplikacji. Jeśli użytkownik ma zainstalowaną aplikację na tym urządzeniu, powinna się otworzyć, w przeciwnym razie link http powinien przekierować do itunes.
8 answers
Nie da się tego sprawdzić. Istnieje jednak dobre obejście.
Pomysł jest w zasadzie taki:
-
Gdy po raz pierwszy otworzysz aplikację, otworzysz mobilną przeglądarkę safari z poziomu aplikacji na predefiniowany adres URL na serwerze]}
Na tym adresie URL można skonfigurować plik cookie, jak appinstalowane do użytkowników mobilnego safari
Jeśli nie masz konta, możesz skorzystać z tej opcji, aby uzyskać dostęp do swojego konta.]}
- Wszystkie linki e-mail wskazują na Twoją stronę, ale na stronie internetowej można sprawdzić, czy przeglądarka jest mobilna Safari i czy appInstalled cookie istnieje Jeśli przeglądarka nie jest mobilną przeglądarką Safari lub plik cookie nie zostanie znaleziony, przekierowujesz do AppStore lub pozostajesz na swojej stronie.
- Jeśli warunki # 4 są prawdziwe, przekierowujesz użytkownika do aplikacji z zarejestrowanym schematem Jeśli aplikacja została usunięta przez użytkownika, więc Niestandardowy schemat url nie powiedzie się, masz bezpieczne przekierowanie do appstore
The 2 last kroki są wyjaśnione w tym poście
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:09:58
Myślę, że prostszą odpowiedzią byłoby skonfigurowanie strony na serwerze z następującym javascript:
(function() {
var app = {
launchApp: function() {
window.location.replace("myapp://");
this.timer = setTimeout(this.openWebApp, 1000);
},
openWebApp: function() {
window.location.replace("http://itunesstorelink/");
}
};
app.launchApp();
})();
To w zasadzie próbuje przekierować do aplikacji i ustawia limit czasu, aby przekierować do app store, jeśli to się nie powiedzie.
Możesz nawet uczynić kod bardziej inteligentnym i sprawdzić w user agent, czy jest użytkownikiem ios, Androida lub webusera, a następnie odpowiednio je przekierować.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-16 21:09:04
Jeśli masz stronę internetową, do której linkujesz z wiadomości e-mail ze stroną internetową zawierającą iframe
z src
ustawioną na niestandardowy schemat dla Twojej aplikacji, iOS automatycznie przekieruje do tej lokalizacji w aplikacji. Jeśli aplikacja nie zostanie zainstalowana, nic się nie stanie. Umożliwia to Głębokie łącze do aplikacji, jeśli jest zainstalowana, lub przekierowanie do sklepu z aplikacjami, Jeśli nie jest zainstalowana.
Na przykład, jeśli masz zainstalowaną aplikację twitter i przejdź do strony internetowej zawierającej następujące znaczniki, zostaniesz natychmiast przekierowany do aplikacji. Jeśli nie masz zainstalowanej aplikacji Twitter, zobaczysz tekst "aplikacja Twitter nie jest zainstalowana."
<!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>
[4]} Oto bardziej dokładny przykład, który przekierowuje do App store, jeśli aplikacja nie jest zainstalowana:
<!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>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-04 16:51:58
"Smart App Banners" - nie jestem pewien, kiedy się pojawili, ale po znalezieniu tego postu szukającego tych samych, a następnie inteligentnych bannerów aplikacji, jest to kontynuacja.
Banery Smart App to jednolinijkowy meta tag html w nagłówku każdej strony, którą chcesz zaoferować swojej aplikacji przez internet:
<meta name="apple-itunes-app" content="app-id=myAppStoreID, affiliate-data=myAffiliateData, app-argument=myURL">
, który pokazuje tę ikonę u góry strony i "otwórz tę stronę" za pomocą aplikacji lub przekierowania do sklepu z aplikacjami.
Metadane dla tej strony na iPhone wygląda tak (oczywiście anonimowo):
<meta name="apple-itunes-app" content="app-id=605841731, app-argument=lync://confjoin?url=https://meet.rtc.yourcorporatedomain.com/firstName.lastName/conferenceID">
Apple Developer Documentation-promowanie aplikacji za pomocą banerów Smart App
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-26 15:43:36
Tak, to całkiem proste. Wymaga to, aby aplikacja, którą chcesz otworzyć, miała schemat URL zadeklarowany w pliście:
//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"]];
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-27 01:10:05
Istnieje kilka prostych kroków, aby osiągnąć to działanie
Krok 1
Go - > Project (select target) -> info -> URL Types
Utwórz schemat URL w Xcode Like this
tutaj schemat URL jest myApp (lepiej mieć wszystkie znaki małymi literami).
Krok 2
Setup Delegate jeśli planujesz odbierać parametry/ciągi zapytań z adresu URL
Oto kod :
- (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;
}
Koniec pracy pobocznej Xcode.
Krok 3
Odwołując się do kodu @ BananaNeil tutaj, ponieważ nie jestem facetem Front end
(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();
})();
Mam nadzieję, że to pomoże wam wszystkim
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-09 12:04:36
Jest tu mnóstwo skomplikowanych przypadków, więc najprostszym rozwiązaniem jest pozwolić komuś innemu zająć się tymi rzeczami.
This Is what https://branch.io / do. Możesz użyć ich darmowego planu, aby osiągnąć dokładnie to, co chcesz, z garścią bonusowych funkcji
- statystyki
- możesz przekazać informacje wraz z linkiem, a zostaną one pobrane, nawet jeśli użytkownik musi najpierw wykonać instalację
- link będzie działał na pulpicie (domyślnie wyświetli tekst instalacji link do telefonu komórkowego)
Nie jestem związany z Branch.io ale używam ich produktu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-01 16:15:17
Jeśli ktoś nadal tkwi w tym problemie i potrzebuje najprostszego rozwiązania, pokochasz node-deeplink
1.) Jeśli aplikacja jest zainstalowana: wywołanie aplikacji przez głębokie linkowanie zawsze wywoła componentDidMount głównego komponentu. Więc możesz tam dołączyć słuchacza. Like:
Linking.getInitialURL()
.then(url => {
if (url) {
this.handleOpenURL({ url });
}
})
.catch(console.error);
Linking.addEventListener('url', this.handleOpenURL);
handleOpenURL(event) {
if (event) {
console.log('event = ', event);
const url = event.url;
const route = url.replace(/.*?:\/\//g, '');
console.log('route = ', route);
if(route.match(/\/([^\/]+)\/?$/)) {
const id = route.match(/\/([^\/]+)\/?$/)[1];
const routeName = route.split('/')[0];
if (routeName === 'privatealbum') {
Actions.privateAlbum({ albumId: id });
}
}
}
}
2. Jeśli aplikacja nie jest zainstalowana: po prostu skonfiguruj trasę na serwerze i pakiet node-deeplink obsłuży mostek między przeglądarką internetową a app store, gdy aplikacja nie jest zainstalowana w Twoim komputerze mobile.
Przez to obie sprawy będą rozpatrywane bez walki
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-07 07:35:06