source

YouTube나 Maps 등의 iPhone 앱에 http+domain 기반의 URL Scheme를 등록할 수 있습니까?

ittop 2023. 4. 22. 10:27
반응형

YouTube나 Maps 등의 iPhone 앱에 http+domain 기반의 URL Scheme를 등록할 수 있습니까?

iOS에서 앱이 전화기에 설치될 때마다 내 도메인(http://martijnthe.nl 등)의 URL을 열고, 그렇지 않을 경우 모바일 Safari를 사용하여 URL을 열 수 있도록 하고 싶습니다.

독자적인 프로토콜 서픽스를 작성하여 Info.plist에 등록할 수 있다고 읽었습니다만, 앱이 인스톨 되어 있지 않은 경우는 Mobile Safari에서 에러가 발생합니다.

회피책은 무엇입니까?

한 가지 아이디어:

1) 임의의 데스크톱 브라우저에서 열리는http:// URL을 사용하여 브라우저를 통해 서비스를 렌더링합니다.

2) User-Agent를 확인하고 Mobile Safari의 경우 myprotocol:// URL을 열어 iPhone 앱을 열고 실패 시 Mobile iTunes를 앱 다운로드에 개방합니다.

이게 먹힐지 모르겠지만...제안사항감사합니다!

이 작업을 수행하는 가장 덜 거슬리는 방법은 다음과 같습니다.

  1. 사용자 에이전트가 iPhone/iPod Touch의 에이전트인지 확인합니다.
  2. .appInstalled 표시
  3. true로 되어 있는 cookie를 true로 합니다.window.location로로 합니다.your-uri://
  4. 「Yep, I got it」, 「No, 그러나 나는 그것을 시험해 보고 싶다」, 「I want to try it」, 「iPhone」, 「iPhone」, 「iPhone」, 「iPhone」, 「iPhone」, 「I got it」, 「Yep, I got it」, 「No, I want it」, 「I want it」, I want to try, I want it」, I want it.
    1. 되고 "Yep" "Cookie" true"로 .your-uri://
    2. "No" 버튼을 누르면 "http://itunes.com/apps/yourappname"로 리디렉션되어 장치에서 앱 스토어가 열립니다.
    3. "Leave me one" 버튼을 누르면 cookie가 false로 설정되고 있습니다.

다른 옵션은 Javascript에서 다음 작업을 수행하는 것입니다.

setTimeout(function() {
  window.location = "http://itunes.com/apps/yourappname";
}, 25);

// If "custom-uri://" is registered the app will launch immediately and your
// timer won't fire. If it's not set, you'll get an ugly "Cannot Open Page"
// dialogue prior to the App Store application launching
window.location = "custom-uri://";

당신의 폴백이 다른 앱링크라면 자바스크립트로 이것을 할 수 있습니다.Nathan의 제안을 바탕으로:

<html>
  <head>
    <meta name="viewport" content="width=device-width" />
  </head>
  <body>

    <h2><a id="applink1" href="fb://profile/116201417">open facebook with fallback to appstore</a></h2>
    <h2><a id="applink2" href="unknown://nowhere">open unknown with fallback to appstore</a></h2>
    <p><i>Only works on iPhone!</i></p>    

  <script type="text/javascript">

// To avoid the "protocol not supported" alert, fail must open another app.
var appstorefail = "itms://itunes.apple.com/us/app/facebook/id284882215?mt=8&uo=6";

function applink(fail){
    return function(){
        var clickedAt = +new Date;
        // During tests on 3g/3gs this timeout fires immediately if less than 500ms.
        setTimeout(function(){
            // To avoid failing on return to MobileSafari, ensure freshness!
            if (+new Date - clickedAt < 2000){
                window.location = fail;
            }
        }, 500);    
    };
}

document.getElementById("applink1").onclick = applink(appstorefail);
document.getElementById("applink2").onclick = applink(appstorefail);

</script>
</body>
</html>

라이브 데모를 확인해 주세요.

iOS 6 기기에는 스마트 앱 배너를 사용한 앱 프로모션 옵션이 있습니다.

하는 것을 했지만, 이 답변은 앱 .UIWebView.

해서 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★UIWebView트위터를 하다그리고 그들이 내 사이트의 버튼을 클릭했을 때 트위터는 화려해지려고 노력했고 단지 완성하려고 했다.window.location이치노 무슨 요.UIAlertView계하?????라는 메시지가 뜨면 두 번째 팝업 없이 앱스토어로 바로 리디렉션됩니다.

이프람스에 의해, 「」는 됩니다.UIAlertView심플하고 우아한 사용자 경험을 제공합니다.

j쿼리

var redirect = function (location) {
    $('body').append($('<iframe></iframe>').attr('src', location).css({
        width: 1,
        height: 1,
        position: 'absolute',
        top: 0,
        left: 0
    }));
};

setTimeout(function () {
    redirect('http://itunes.apple.com/app/id');
}, 25);

redirect('custom-uri://');

자바스크립트

var redirect = function (location) {
    var iframe = document.createElement('iframe');
    iframe.setAttribute('src', location);
    iframe.setAttribute('width', '1px');
    iframe.setAttribute('height', '1px');
    iframe.setAttribute('position', 'absolute');
    iframe.setAttribute('top', '0');
    iframe.setAttribute('left', '0');
    document.documentElement.appendChild(iframe);
    iframe.parentNode.removeChild(iframe);
    iframe = null;
};

setTimeout(function () {
    redirect('http://itunes.apple.com/app/id');
}, 25);

redirect('custom-uri://');

편집:

iframe에 절대 위치를 추가하여 삽입할 때 페이지 하단에 임의 공백 비트가 없도록 합니다.

또, Android 에서는 이 어프로치의 필요성을 깨닫지 못하고 있는 것도 중요합니다.「」를 사용합니다.window.location.href정상적으로 동작합니다.

은 드디어 특정 iOS9를 을 등록할 수 .http://URL: 유니버설링크

작동 원리에 대한 매우 대략적인 설명:

  • 합니다.http://URL(URL)입니다.
  • 지정된 도메인의 서버에서 서버의 도메인에서 URL을 열겠다고 선언한 앱에서 열 URL을 지정해야 합니다.
  • 는 iOS URL을 여는 시도를 합니다.http://위에서 설명한 바와 같이 셋업 URL로 올바른 앱이 설치되면 자동으로 열립니다. Safari ★★★★★★★★★★★★★★★★★★★★★★…

iOS에서 딥링크를 하는 가장 깔끔한 방법입니다만, 유감스럽게도 iOS9 이상에서만 동작합니다.

Nathan과 JB의 답변을 바탕으로 다시 구축:

앱을 실행하는 방법 url에서 엑스트라 클릭을 하지 않고 링크를 클릭하는 중간 단계를 포함하지 않는 솔루션을 원하는 경우 다음을 사용할 수 있습니다.이 Javascript를 통해 앱이 설치되어 있으면 정상적으로 기동하거나 타임아웃 시 앱스토어를 기동하는 Django/Python의 Httpresponse 객체를 반환할 수 있었습니다.또, iPhone 4S 로 동작하려면 , 타임 아웃 기간을 500 ~100 으로 조정할 필요가 있었습니다.테스트 및 조정하여 상황에 맞게 조정하십시오.

<html>
<head>
   <meta name="viewport" content="width=device-width" />
</head>
<body>

<script type="text/javascript">

// To avoid the "protocol not supported" alert, fail must open another app.
var appstorefail = "itms://itunes.apple.com/us/app/facebook/id284882215?mt=8&uo=6";

var loadedAt = +new Date;
setTimeout(
  function(){
    if (+new Date - loadedAt < 2000){
      window.location = appstorefail;
    }
  }
,100);

function LaunchApp(){
  window.open("unknown://nowhere","_self");
};
LaunchApp()
</script>
</body>
</html>
window.location = appurl;// fb://method/call..
!window.document.webkitHidden && setTimeout(function () {
    setTimeout(function () {
    window.location = weburl; // http://itunes.apple.com/..
    }, 100);
}, 600);

document.webkitHidden이 백그라운드로 중인지 이 코드는 www..com의 사파리입니다.www.baidu.com을 참조하십시오.

를 추가하는 경우iframe웹 페이지에 있는 웹 페이지에서src앱의 커스텀 스킴으로 설정하면 iOS는 자동으로 앱의 해당 위치로 리다이렉트됩니다.앱을 설치하지 않으면 아무 일도 일어나지 않습니다.이렇게 하면 앱이 설치된 경우 앱으로 상세 링크를 걸 수 있으며, 설치되지 않은 경우 앱 스토어로 리디렉션할 수 있습니다.

예를 들어 twitter 앱을 설치하고 다음 마크업이 포함된 웹 페이지로 이동하면 바로 앱으로 이동합니다.

<!DOCTYPE html>
<html>
    <head>
    <title>iOS Automatic Deep Linking</title>
    </head>
    <body>
        <iframe src="twitter://" width="0" height="0"></iframe>
        <p>Website content.</p>
    </body>
</html>

다음은 앱이 설치되지 않은 경우 앱 스토어로 리디렉션하는 보다 자세한 예입니다.

<!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>

해결책을 제시하겠습니다.

흐림 및 포커스를 사용하여 부울 위치 맞추기 설정

//see if our window is active
window.isActive = true;
$(window).focus(function() { this.isActive = true; });
$(window).blur(function() { this.isActive = false; });

이와 같은 호출을 하는 jquery click 핸들러를 사용하여 링크를 바인드합니다.

function startMyApp(){
  document.location = 'fb://';

  setTimeout( function(){
    if (window.isActive) {
        document.location = 'http://facebook.com';
    }
  }, 1000);
}

앱이 열리면 창에 집중이 안 되고 타이머가 종료됩니다.그렇지 않으면 아무것도 얻지 못하고 일반적인 페이스북 URL을 로드합니다.

제가 알기로는 OS 전체를 이해시킬 수 없습니다.http:+도메인 URL. 새 스킴만 등록할 수 있습니다(사용합니다).x-darkslide: 에서 앱이 정상적으로 모바일 사파리

다만, 앱이 인스톨 되어 있지 않은 경우는, 「아직도 여기?」라고 하는 표시가 되어 있는 경우는 대응하지 않으면 안 됩니다.iTunes에서 앱을 다운로드하려면 웹 페이지에서 이 링크를 클릭하십시오.

User-Agent를 확인하고 Mobile Safari의 경우 myprotocol:// URL을 열어 iPhone 앱을 열고 시도가 실패할 경우 Mobile iTunes를 열어 앱 다운로드에 사용합니다.

합리적인 접근 방식인 것 같습니다만, 두 번째 수단으로 모바일 ITU를 오픈할 수 있을 것 같지는 않습니다.둘 중 하나를 선택해야 할 것 같습니다. 앱으로 리다이렉트하거나 ITU로 리다이렉트합니다.

즉, my protocol://로 리다이렉트 할 때 앱이 통화 중이 아닌 경우, 다시 itunes로 리다이렉트 할 기회가 없습니다.

먼저 (iphone 최적화) 랜딩 페이지로 리다이렉트하여 사용자에게 앱을 클릭할 수 있는 옵션을 제공하거나 앱을 얻을 수 없는 경우 itunes로 이동할 수 있습니다.단, 사용자가 올바른 작업을 수행할 수 있도록 해야 합니다.(편집: 쿠키를 처음 설정해도 될까요?)

팝업 문제를 해결하기 위해 애플이 이 문제를 해결할 방법이 있다는 것을 알게 되었다.

실제로 이 링크를 클릭하면 응용 프로그램을 설치한 경우 해당 링크로 재루팅됩니다.그렇지 않은 경우 팝업 없이 웹 페이지로 리디렉션됩니다.

.document.hidden

생각할 수 있는 해결책

document.location = 'app://deep-link';

setInterval( function(){
  if (!document.hidden) {
    document.location = 'https://app.store.link';
  }
}, 1000);

하지만 이것은 사파리에서는 작동하지 않는 것 같다.

언급URL : https://stackoverflow.com/questions/1108693/is-it-possible-to-register-a-httpdomain-based-url-scheme-for-iphone-apps-like

반응형