リダイレクトのためにページが非表示になったことを検出するモバイルサファリのイベントを探しています。ユーザーがアプリをインストールしている場合はアプリを直接開き、インストールされている場合はFacebookを試し、インストールされていない場合はそのIDのWebページにアクセスします。
- 'myapp'がインストールされている場合、myappが開きます。しかし、サファリタブはまだfacebook.comにリダイレクトされます
- 'myapp'がインストールされていないが、facebookがインストールされている場合は、facebookiosアプリが開きます。しかし、サファリタブはまだfacebook.comにリダイレクトされます
次のHTML/JSを使用してテストリンクを作成しました。
<!DOCTYPE html>
<html>
<head>
<title>Redirect Test</title>
<script type='text/javascript' src='//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js'></script>
<meta name='viewport' content='initial-scale = 1.0,maximum-scale = 1.0' />
</head>
<body>
<button>Open Oreo</button>
<script type='text/javascript'>
jQuery(function(){
jQuery( 'button' ).on( 'click', function(){
var myid = null, fbid = null;
// Watch for page leave to kill timers
jQuery( window ).on( 'pagehide pageshow blur unload', function(){
if ( myid ) {
clearTimeout( myid );
}
if ( fbid ) {
clearTimeout( fbid );
}
});
window.location = "myapp://fbprofile/oreo";
var myid = setTimeout(function(){
// My app doesn't exist on device, open facebook
window.location = "fb://profile/oreo";
fbid = setTimeout(function(){
// Facebook doesn't exist on device, open facebook mobile
window.location = "https://www.facebook.com/oreo";
}, 100);
}, 100);
});
});
</script>
</body>
</html>