[ios] iOS 유니버설 링크가 인앱에서 열리지 않음

그래서 저는이 튜토리얼을 정확히 따라했고 제공된 것과 동일한 값을 사용했습니다 :
https://blog.branch.io/how-to-setup-universal-links-to-deep-link-on-apple-ios-9

Apple Association 파일도 링크 디렉토리에 준비되어 있습니다.
WEB_PAGE:PORT_NUMBER/apple-app-site-association

이쪽에 모든 것이 설정되어있는 것 같습니다.

권한을 추가하고 프로비저닝 프로필을 업데이트했으며 모든 것이 설정되었습니다.

내 기기에서 앱을 실행하고 링크 http://WEB_PAGE:PORT_NUMBER를 열면 항상 Safari가 열립니다.

다음 방법에도 중단 점이 있습니다.

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray * __nullable restorableObjects))restorationHandler

하지만 질치.

누가 이것을 완성 했습니까? 내가 놓친 것이 있습니까?



답변

몇 가지 가능한 문제가 있습니다.

  1. : 확실히 문제가 없는지 링크 검사기로 도메인을 붙여 시도 할 https://limitless-sierra-4673.herokuapp.com/ (- 참조 ShortStuffSushi에 신용 의 repo )

  2. 권한에 지정된 도메인에 TLS가 제대로 설정되지 않은 경우 iOS는 시스템 로그에 오류 메시지를 기록합니다. 애플리케이션 로그가 아닌 OS 로그에 묻혀 있습니다. 오류 메시지는 다음과 같습니다 Sep 21 14:27:01 Derricks-iPhone swcd[2044] <Notice>: 2015-09-21 02:27:01.878907 PM [SWC] ### Rejecting URL 'https://examplecustomdomain.com/apple-app-site-association' for auth method 'NSURLAuthenticationMethodServerTrust': -6754/0xFFFFE59E kAuthenticationErr. 여기 에서 가져온 오류 메시지 , TLS 용 CloudFlare 사용에 대한 빠른 (불완전한) 지침은 여기 .

  3. 내 개인 테스트에서 Safari의 링크를 클릭 / 입력 한 적이 한 번도 앱을 직접 열지 않았습니다. 다른 애플 리케이션 (iMessage를, 메일, 여유 등)에서 클릭하는 것이 있다 했다. 다른 사람들은 Google 검색 결과에서 링크를 클릭하면 앱이 직접 열렸다고보고했습니다.

  4. 유니버설 링크가 앱을 여는 데 성공한 다음 Safari로 클릭 연결하면 (앱 탐색 표시 줄의 오른쪽 상단 모서리에있는 사이트를 탭하여) 해당 URL을 방문 할 때 iOS가 앱 열기를 중지합니다 . 그런 다음 Safari에서 아래로 당겨서 “열기”를 사용하여 페이지 상단에 배너를 표시 할 수 있습니다. 나는 이것에 많은 시간을 낭비했다. Apple-app-site-assocation 파일에서 지정한 경로를 기반으로 사이트를 클릭하면 => UL을 비활성화하는 것은 경로 에 따라 달라집니다. 그래서 당신은 별도의 경로가있는 경우, yoursite.com/a/*그리고 yoursite.com/b/*, 당신은 클릭하면 yoursite.com/a/*그것은 당신이 다음에 클릭을 통해 앱의 오른쪽 상단 모서리에있는 옵션을 가지고, 직접 응용 프로그램을 엽니 다 yoursite.com/a/*. 그렇게하면 후속 방문이yoursite.com/a/*앱이 아닌 브라우저에서 열립니다. 그러나 yoursite.com/b/*영향을받지 않고 여전히 앱을 직접 열어야합니다.

문제가 무엇인지 발견하면 알려주세요. 개인적으로 Universal Links의 작동 방식과 존재하는 엣지 케이스에 대해 매우 궁금합니다. 행운을 빕니다.


답변

이것이 잘못 될 수있는 방법에는 여러 가지가 있습니다. 두 가지 문제가 발생했습니다.

  • Xcode에서 Associated Domains 인 타이틀먼트를 추가 할 때 각 항목은 다음으로 시작해야 applinks:하고 도메인 이름이 있어야합니다 . 예 applinks:www.apple.com.

  • Xcode가 나를 위해 인 타이틀먼트 파일을 생성했지만 빌드에는 포함되지 않았습니다. 수동으로 해당 상자를 클릭해야했습니다.

그리고 예, 그렇게 한 후에는 apple-app-site-association파일 에 서명 할 필요가 없었 습니다. 단지 일반 텍스트 일 ​​뿐이며 HTTPS를 통해 제공되는 한 작동합니다. (하지만 iOS 8을 지원하는 경우에도 서명해야합니다.)


답변

Universal Links에 대한 연관 파일을 만드는 문서에 분명히 오류가 있습니다.

그것이 말하는 곳 :

appID 키의 값은 앱의 팀 ID와 번들 ID입니다.

그것은 말해야한다

appID 키의 값은 앱의 접두사 및 번들 ID입니다.

대부분의 앱에서 팀 ID와 앱 접두사가 동일한 것처럼 보이지만 앱이 수년 동안 스토어에 있었다면이 값이 다를 수 있습니다.

이 값을 찾으려면 https://developer.apple.com 에서 회원 센터를 열고 “인증서, 식별자 및 프로필”을보고 “식별자”를 클릭 한 다음 “식별자”아래의 표에서 “앱 ID”를 클릭하십시오. 앱을 찾고 거기에서 접두사 값과 번들 ID를 사용하여 연결 파일에 대한 AppID를 만듭니다.


답변

이 문제를 디버깅하는 데 도움이되도록 앱을 설치할 때 기기의 콘솔 출력에서 ​​”swcd”를 검색하여 범용 링크 등록이 작동했는지 실패했는지 확인하세요.

  1. 시뮬레이터가 아닌 실제 장치를 사용하십시오.
  2. 장치에서 앱을 삭제하십시오.
  3. 장치를 컴퓨터에 연결하고 xcode에서 장치의 콘솔 출력을 봅니다. (창-> 장치-> [사용자 장치]-> 콘솔 열기). 이 창을 열어 두십시오.
  4. 앱을 설치하고 시작하십시오.
  5. 콘솔 출력을 “swcd”로 필터링합니다. 성공하면 다음 스크린 샷과 같은 것을 볼 수 있습니다. 실패하면 다른 것을 볼 수 있습니다. 아무것도 표시되지 않으면 Associated Domains 권한을 추가하는 것과 같은 근본적인 문제가 발생한 것입니다.

Applink가 성공적으로 추가되었습니다.


답변

St.derrick의 답변 은 유익합니다.

그러나 범용 링크를 다시 사파리 대신 앱에서 열 수 있도록하려면 다음 작업을 수행해야합니다.

  • Mail 또는 iMessage에서 범용 링크를 길게 누르면 Safari 또는 App에서 열 것인지 여부에 대한 옵션이 표시됩니다.

답변

apple-app-site-association서버 측에서 유효성을 검사하려면 Apple의 공식 유효성 검사기를 사용할 수 있습니다.

https://search.developer.apple.com/appsearch-validation-tool/


답변

나는 루트 디렉토리 a (예 :)에 대한 링크가 http://example.com/내 앱을 열지 않았지만 경로 (예 :)를 추가 http://example.com/mypath하면 작동 한다는 것을 깨달았습니다 . "/"경로 목록에 추가하면 다음 과 같이 해결되었습니다.

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TEAM_ID.BundleIdentifier",
                "paths": [ "*", "/" ]
            }
        ]
    }
}

Apple Developer Forums 스레드 에서 slutsker가 답변했습니다 .