Development Tip

설치된 경우 응용 프로그램으로 리디렉션하고 그렇지 않으면 App Store로 리디렉션합니다.

yourdevel 2020. 12. 11. 20:21
반응형

설치된 경우 응용 프로그램으로 리디렉션하고 그렇지 않으면 App Store로 리디렉션합니다.


사용자 지정 스키마 (예 : so : //)를 등록하여 iOS의 앱에 직접 연결할 수 있으며 iTunes를 통해 앱 스토어의 앱에 연결할 수도 있습니다.

대부분의 경우 이상적인 흐름은 앱 이 설치되어있는 경우 앱으로 리디렉션되고 그렇지 않은 경우 스토어로 리디렉션되는 링크를 제공하는 것입니다. 이것이 가능합니까? 그렇다면 어떻게합니까?

명확성을 위해 추가 된 시나리오는 응용 프로그램의 그룹에 참여하도록 초대하는 내 iPhone의 전자 메일에서 링크 (http)를 여는 것입니다. 사용자가 해당 장치에 앱을 설치 한 경우 열어야하고, 그렇지 않으면 http 링크가 iTunes로 리디렉션되어야합니다.


이를 확인할 방법이 없습니다. 그러나 좋은 해결 방법이 있습니다.

아이디어는 기본적으로 다음과 같습니다.

  1. 처음으로 앱을 열면 앱 내에서 서버의 미리 정의 된 URL로 모바일 사파리를 엽니 다.
  2. 해당 URL에서 사용자 모바일 사파리에 appInstalled와 같은 쿠키를 설정합니다.
  3. 그런 다음 등록 된 체계를 사용하여 사용자를 앱으로 다시 이동시킵니다 (FB가 SSO에서 수행하는 것과 동일).
  4. 모든 이메일 링크는 귀하의 웹 사이트를 가리 키지 만 웹 사이트에서 브라우저가 모바일 Safari인지, appInstalled 쿠키가 있는지 확인합니다.
  5. 브라우저가 모바일 Safari가 아니거나 쿠키를 찾을 수없는 경우 AppStore로 리디렉션하거나 웹 페이지에 남아 있습니다.
  6. # 4의 조건이 참이면 등록 된 체계를 사용하여 사용자를 앱으로 리디렉션합니다.
  7. 사용자가 앱을 삭제하여 사용자 지정 URL 체계가 실패하면 앱 스토어에 대한 안전 리디렉션이 발생합니다.

마지막 2 단계는 이 SO 게시물에 설명 되어 있습니다.


더 간단한 대답은 다음 자바 스크립트로 서버에 페이지를 설정하는 것입니다.

(function() {
  var app = {
    launchApp: function() {
      window.location.replace("myapp://");
      this.timer = setTimeout(this.openWebApp, 1000);
    },

    openWebApp: function() {
      window.location.replace("http://itunesstorelink/");
    }
  };

  app.launchApp();
})();

이것은 기본적으로 앱으로 리디렉션을 시도하고 실패 할 경우 앱 스토어로 리디렉션하도록 제한 시간을 설정합니다.

코드를 좀 더 똑똑하게 만들고 사용자 에이전트가 ios 사용자, Android 사용자 또는 웹 사용자인지 확인한 다음 적절하게 리디렉션 할 수도 있습니다.


앱에 대한 사용자 지정 체계 iframesrc설정된 웹 페이지가 포함 된 이메일에서 연결하는 웹 페이지가있는 경우 iOS는 자동으로 앱의 해당 위치로 리디렉션됩니다. 앱이 설치되어 있지 않으면 아무 일도 일어나지 않습니다. 이를 통해 앱이 설치되어있는 경우 앱에 딥 링크를 걸거나 설치되지 않은 경우 App Store로 리디렉션 할 수 있습니다.

예를 들어 트위터 앱이 설치되어 있고 다음 마크 업이 포함 된 웹 페이지로 이동하면 즉시 앱으로 이동합니다. Twitter 앱을 설치하지 않은 경우 "Twitter 앱이 설치되지 않았습니다."라는 텍스트가 표시됩니다.

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

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

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

"스마트 앱 배너"-언제 나타 났는지 확실하지 않지만 동일한 게시물을 찾은 후 스마트 앱 배너를 찾은 후 후속 조치입니다.

스마트 앱 배너는 웹 경험을 통해 앱을 제공하려는 각 페이지의 헤더에있는 한 줄짜리 html 메타 태그입니다.

<meta name="apple-itunes-app" content="app-id=myAppStoreID, affiliate-data=myAffiliateData, app-argument=myURL">

페이지 상단에 아이콘이 표시되고 앱과 함께 "다음에서이 페이지 열기"가 표시되거나 App Store로 연결됩니다.

여기에 이미지 설명 입력

iPhone에서이 페이지의 메타 데이터는 다음과 같습니다 (물론 익명화 됨).

<meta name="apple-itunes-app" content="app-id=605841731, app-argument=lync://confjoin?url=https://meet.rtc.yourcorporatedomain.com/firstName.lastName/conferenceID">

Apple 개발자 문서-스마트 앱 배너로 앱 홍보


네, 꽤 쉽습니다. 이를 위해서는 열려고하는 앱이 plist에 선언 된 URL 스키마를 가져야합니다.

//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"]];
}

이 작업을 수행하는 몇 가지 간단한 단계가 있습니다.

1 단계

이동-> 프로젝트 (대상 선택)-> 정보-> URL 유형

여기에 이미지 설명 입력

다음과 같이 Xcode에서 URL 체계 만들기

여기에 이미지 설명 입력 여기서 URL Scheme은 myApp입니다 (모든 문자를 소문자로 지정하는 것이 좋습니다).

2 단계

URL에서 매개 변수 / 쿼리 문자열을 수신 할 계획이있는 경우 위임 설정

다음은 코드입니다.

- (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;
}

Xcode 측 작업 종료.

3 단계

내가 프론트 엔드 사람이 아니기 때문에 @BananaNeil 코드를 여기에서 참조하십시오.

(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();
})();

모두에게 도움이되기를 바랍니다.


여기에는 복잡한 엣지 케이스가 많이 있으므로 가장 쉬운 솔루션은 다른 사람이 해당 작업을 처리하도록하는 것입니다.

이것이 https://branch.io/가하는 일입니다. 무료 플랜을 사용하여 몇 가지 보너스 기능으로 원하는 것을 정확하게 달성 할 수 있습니다.

  • 통계
  • 링크와 함께 정보를 전달할 수 있으며 사용자가 먼저 설치해야하더라도 검색됩니다.
  • 링크는 데스크탑에서 작동합니다 (기본적으로 모바일에 설치 링크를 문자로 보냅니다).

저는 Branch.io와 제휴하지 않지만 그들의 제품을 사용하고 있습니다.

참고 URL : https://stackoverflow.com/questions/14048159/redirect-to-application-if-installed-otherwise-to-app-store

반응형