programing

iOS Universal Link가 앱 내에서 열리지 않습니다.

lovejava 2023. 4. 14. 20:51

iOS Universal Link가 앱 내에서 열리지 않습니다.

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

Apple Association(Apple Association)
WEB_PAGE:PORT_NUMBER/apple-app-site-association

모든 것이 이쪽에 설치된 것 같다.

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

http://WEB_PAGE:PORT_NUMBER

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

- (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, Mail, Slack 등)에서 클릭이 완료되었습니다.다른 사람들은 구글 검색 결과에서 링크를 클릭하면 앱이 직접 열렸다고 보고했습니다.

  4. Universal Link에서 앱을 열 때 성공하고 Safari를 클릭하면(앱 내 네비게이션 바 오른쪽 상단 모서리에 있는 사이트를 탭하여) 해당 URL을 방문하면 iOS에서 앱이 열리지 않습니다.그런 다음 Safari에서 아래로 당기면 페이지 맨 위에 "Open" 배너를 표시할 수 있습니다.나는 이것에 많은 시간을 낭비했다.사이트 = > 을 클릭하여 UL을 비활성화하는 것은 애플 앱 사이트 관련 파일에서 지정한 경로에 따라 특정 경로로 보입니다.그래서 만약 다른 루트가 있다면yoursite.com/a/* ★★★★★★★★★★★★★★★★★」yoursite.com/b/*yoursite.com/a/*앱 상단 모서리에서 할 수 있는 .yoursite.com/a/*, 그 to to to to to에 방문합니다yoursite.com/a/*앱이 아닌 브라우저에서 열립니다. ★★★★★★★★★★★★★★.yoursite.com/b/*영향을 받지 않고 앱을 직접 열어야 합니다.

무엇이 문제인지 알게 되면 알려주세요.저는 개인적으로 Universal Links의 작동 방식과 어떤 엣지 케이스가 존재하는지 매우 궁금합니다.

이 일이 잘못될 수 있는 많은 방법들이 있다.두 가지 점이 문제를 일으켰습니다.

  • 엔트리를 할 때 각는 Xcode로 .applinks:도메인 이름을 입력합니다.예.applinks:www.apple.com.

  • Xcode가 나를 위해 자격 파일을 만들었지만 내 빌드에 포함되지 않았다.나는 수동으로 그 상자를 클릭해야만 했다.

그렇게 ,, 렇, 렇, 그, 그, the, and, 에 서명할 필요가 없습니다.apple-app-site-association파일: 이것은 단순한 텍스트이며 HTTPS를 통해 제공되는 한 동작합니다(iOS 8을 지원하는 경우에는 서명해야 합니다).

이 문제를 디버깅하려면 앱을 설치할 때 장치의 콘솔 출력에서 "swcd"를 검색하여 유니버설 링크 등록이 작동하는지 확인하십시오.

  1. 시뮬레이터가 아닌 실제 장치를 사용하십시오.
  2. 단말기에서 앱을 삭제합니다.
  3. 디바이스를 컴퓨터에 연결하고 디바이스의 콘솔 출력을 x코드로 표시합니다.(클릭 -> 디바이스 -> [디바이스] -> 콘솔 열기).이 창문을 열어 두세요.
  4. 앱을 설치하고 부팅합니다.
  5. 콘솔 출력을 "swcd"로 필터링합니다.성공했을 경우는, 다음의 스크린샷과 같은 것이 표시됩니다.실패하면 다른 것을 보게 될 것이다.아무것도 표시되지 않으면 Associated Domains 자격 추가와 같은 근본적인 문제가 발생한 것입니다.

Applink가 추가되었습니다.

Universal Links 관련 파일 작성에 관한 문서에 오류가 있는 것 같습니다.

기재되어 있는 장소:

앱의 가치ID 키는 앱의 팀 ID와 번들 ID입니다.

라고 말할 것이다

앱의 가치ID 키는 앱의 Prefix와 번들 ID입니다.

대부분의 앱에서 팀 ID와 앱 접두사는 동일한 것 같지만, 앱이 오랫동안 스토어에 있는 경우에는 이러한 값이 다를 수 있습니다.

이 값을 찾으려면 https://developer.apple.com에서 Member Center를 열고 "Certificates, Identifiers & Profiles"를 보고 "Identifiers" 아래의 표에서 "Identifiers"를 클릭한 후 "App IDs"를 클릭합니다.앱을 찾고 거기서 Prefix 값과 번들 ID를 사용하여 앱을 만듭니다.어소시에이션파일 아이디

「 」를 하려면 , 「 」apple-app-site-association서버측에서는, Apple의 공식 검증 프로그램을 사용할 수 있습니다.

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

St.Derrick의 답변은 유익하다.

그러나 safari가 아닌 앱에서 유니버설 링크를 다시 열려면 다음 작업을 수행해야 합니다.

  • 메일 또는 iMessage에서 Universal 링크를 길게 누르면 사파리에서 열 것인지 앱에서 열 것인지 옵션이 나타납니다.

루트 디렉토리 a로의 링크(예: http://example.com/)는를 추가한 http://example.com/mypath은 효과가 있었습니다.)을 사용하다" " " "/"경로 목록으로 이동합니다.

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

이 Apple Developer Forums 스레드의 slutsker에 의해 응답되었습니다.

유니버설 링크를 통합한 후 프로젝트 버전 또는 빌드 번호를 늘리는 것도 매우 중요합니다.삭제/재설치하더라도 버전을 범핑하지 않으면 iOS에서 링크를 픽업하지 않습니다.

쉽게 여는(범용) 링크를 테스트해야 하는 사용자는 다음 명령을 사용하여 터미널에서 시뮬레이터의 링크를 열 수도 있습니다.

xcrun simctl openurl booted yourapp_or_http://yourlink

예를 들어 다음과 같습니다.

xcrun simctl openurl booted https://www.google.com

Universal Link가 올바르게 구현되었는지 확인하기 위한 간단한 절차입니다.

  • 앱을 시작할 것으로 예상되는 링크를 길게 누릅니다.컨텍스트 메뉴에 "[앱 이름]에서 열기"가 표시됩니다.

  • Notes 앱을 열고 앱을 열 것으로 예상되는 링크를 입력합니다.[완료]를 탭합니다.링크가 노란색으로 바뀌고 링크를 누르면 Safari가 아닌 앱이 열립니다.

  • 링크 http://yourDomain.com 가 앱을 기동하고 있지 않은 경우는, http://yourDomain.com/yourFolder/ 를 사용해 주세요.

  • Safari에서 Context Menu에 사파리에서 "Open in [ your app name]"이 표시되어 있는데 링크를 누르면 앱을 실행하는 대신 사파리에서 링크가 열립니다.

    a. 링크를 클릭했을 때 열린 safari 페이지를 '새로고침하기 위해 당기는 방법'처럼 아래로 당겨 봅니다.앱을 열 수 있는 배너가 나타납니다.배너를 눌러 앱을 열고 홈 버튼을 눌러 앱을 닫은 후 사파리로 돌아가서 링크를 다시 눌러 앱을 실행해 보십시오.배너를 누르면 앱에서 링크를 열 수 있는 기본 설정이 저장되기 때문에 이번에는 앱이 실행되어야 합니다.

    b. a. 단계 후에도 앱이 시작되지 않으면 gmail 등의 웹 메일로 링크를 전송하여 사파리에서 웹 메일 사이트를 열고 링크를 클릭해 보십시오.이 방법이 작동한다면 링크와 동일한 도메인에서 앱을 시작하려고 했을 수 있습니다.제가 본 바로는, 같은 도메인에서 앱을 기동하는 것은 실패하는 경우가 대부분입니다.safari는, 유저가 있는 도메인과 같은 도메인에 있는 경우, 행선지 URL 이 유니버설링크인지 아닌지를 체크하는 것을 꺼릴 가능성이 있습니다.따라서 다른 도메인에서 앱을 실행해 보십시오.

  • 링크를 브라우저 URL 필드에 붙여넣으면 유니버설링크는 작동하지 않습니다.

  • Universal Link는 사용자 주도로 작동<a href="...">요소를 클릭합니다.예: google.com에 bnc.lt을 가리키는 Universal Link가 있으면 앱을 엽니다.

  • Universal Links는 사용자 주도로 동작하지 않습니다.<a href="...">요소를 클릭하여 동일한 도메인을 클릭합니다.예: google.com의 Universal Link가 google.com의 다른 Universal Link를 가리키는 경우 앱을 열지 않습니다.

  • 는 Javascriptwindow. window.onload.click()의 . 수 .<a>」를 참조해 주세요.

출처 : https://dev.branch.io/getting-started/universal-app-links/support/ios/ #support-universal-browers

세 번째 총알은 알아내는 데 하루 정도 걸렸어요

여기 계신 분들이 다른 솔루션을 찾고 계시기 때문에 Universal Links의 디버깅에 대해 많은 문제가 발생하여 많은 골칫거리가 발생하고 있기 때문에 단계별로 정리했습니다.

확인해 주세요.

유니버설 링크 디버깅가이드

디버깅 가이드 미리보기

Universal Link를 새로 설정하려는 경우 이 가이드가 매우 유용합니다.

iOS 딥 링크 설정 가이드

도움이 됐으면 좋겠네요!

앞으로 더 많은 사람들이 저와 같은 문제를 겪게 될 경우를 대비해서 제가 발견한 것들을 추가하려고요.이것들은 대부분 인증 오류와 관련되어 있습니다.

있지 , 는 명시되어 있지 않습니다만, 사과는 명시되어 있지 않습니다.apple-app-site-association파일은 서명된 경우에도 https를 통해 제공되어야 합니다.도 applehttps에서 할 수 .[ 정set ( Settings ) ]-> [ ( General ) ]-> [ ( Profiles ) ]에서 디바이스에 추가된 증명서는 safari에서https를 허용하지만 유니버설링크는 작동하지 않습니다.

에는, , 「」와 같은 됩니다."TrustResultValue" : 4.A.ATrustResultValue5는 증명서가 잘못된 도메인임을 의미합니다(예를 들어 test.com은 www.test.com에서 제공됩니다). a.TrustResultValue4는 증명서가 이 용도로 신뢰되지 않음을 의미합니다.

여기에 디버깅에 도움이 되는 몇 가지 단계가 있습니다."Apple-app-site-association에 대한 액세스 테스트" 섹션은 디바이스가 다음 명령을 수신하고 있는지 확인하는 방법에 대한 단계별 가이드입니다.apple-app-site-association 일일일 file. 단계는 다음과 같이 요약됩니다.

  1. 앱을 제거합니다.이것은, 인스톨시에 파일이 다운로드되기 때문에 필요합니다.

  2. 가 제대로 .apple-app-site-association.

  3. xcode에서 Window -> Devices를 열고 디바이스를 선택합니다.

  4. 창 하단에 있는 삼각형을 클릭하여 디바이스 로그를 엽니다.

  5. 휴지통을 클릭하여 관련 있을 수 있는 이전 로그를 지웁니다.

  6. 재생 버튼을 클릭하여 xcode로 앱을 다시 설치합니다.

  7. 앱이 실행된 후 기기가 파일을 올바르게 요청하고 있다면 "Apple-app-site-association"을 검색하여 찾을 수 있는 오류가 장치 로그에 포함됩니다.

경우,apple-app-site-association파일이 올바르게 처리되고 있는 경우(스텝 2는 생략되어 있습니다), 에러는 발생하지 않습니다.문제가 있는 경우는, 대신에 인증 에러가 표시되는 경우가 있습니다.

apple-app-site-association 파일이 다음 위치에 추가되었습니다.

https://example.com/apple-app-site-association

iOS 9에서는 정상적으로 동작했지만 iOS 10에서는 동작하지 않았습니다.

문제는 .well-known path에 있는 것으로 나타났습니다.

https://example.com/.well-known/apple-app-site-association

https://example.com/.well-known/apple-app-site-association 경로가 https://example.com으로 수정되었기 때문에

<Notice>: Allowing redirect 'https://example.com/.well-known/apple-app-site-association' -> 'https://example.com/'
<Notice>: ### Rejecting AASA file size 154466 for URL https://example.com/.well-known/apple-app-site-association

내 생각에, 만약 잘 알려진 경로가 제대로 작동하지 않는다면, 그것은 보편적인 연결을 끊어버린다.

가장 일반적인 원인은 사용자가 오른쪽 상단을 탭하기 때문에 iOS에 앞으로는 앱(이 경우 Uber)을 열지 말라고 지시하는 것입니다.

수정하려면 아래로 당겨 스마트 배너를 표시하고 OPEN을 누릅니다.

Safari에서 풀다운하고 다시 엽니다.

그 후, 앱을 여는 「기억」이 됩니다.

ios13에는 새로운 형식이 있습니다.https://developer.apple.com/documentation/safariservices/supporting_associated_domains_in_your_app?language=objc 를 참조해 주세요.

다음과 같이 파일을 업데이트했습니다.

 {
  "applinks": {
    "apps": [],
    "details": [
        {
          "appIDs": ["1234.app.company.appname"],
          "appID": "1234.app.company.appname",
          "components": [
            {
              "/": "/login"
            }
         ],
           "paths": [ "/login" ]
        }
    ]
  },
  "webcredentials": {
    "apps": ["1234.app.company.appname"]
  }
}

이 기능을 작동시키기 위해 하루를 소비한 후 전화기를 재시작하면 문제가 해결되었습니다.

앱 제거/재설치도 작동하지 않았습니다.

그럭저럭 해냈지만 꽤 시간이 걸리고 힘들었어요.에 서명하지 않는 apple-app-site-association 파일(서명은 선택 사항입니다!) Safari에서 링크를 눌러도 앱이 열리지 않습니다(그 때문에 매우 골치가 아팠습니다).

가끔 어소시에이션 파일에는 문제가 없지만 iOS는 항상 Safari에서 유니버설 링크를 열기로 결정했습니다.앱이 앱 링크를 인식할 수 있는지 테스트하기 위해 URL을 Notes 또는 Calendar 항목에 추가한 다음 컨텍스트 메뉴가 나타나도록 길게 누릅니다."Open in {YOUR APP}"라고 표시되어 있으면 링크는 작동하고 있지만 iOS는 Safari에서 열기로 결정했습니다."Open in {YOUR APP}"를 누르면 iOS가 앱을 통해 유효한 범용 링크를 열도록 지시합니다.

이걸 알아내는데 거의 하루가 걸렸어문제는 업데이트된 프로비저닝프로파일을 XCode에서 다운로드하지 않는 것이었습니다(이후 XCode도 재부팅했습니다).

([설정] > [계정] > [상세보기]> [모두 다운로드])

시뮬레이터에서 범용 링크를 테스트할 수 있습니다.

App Search Programming Guide(앱 검색 프로그래밍 가이드): Support Universal Links(유니버설 링크 지원)에서 확인

이틀 후 알고 보니 (브런치로부터의) 이러한 링크가

앱링크: xxxx.app.link

는, 애플리케이션의 아카이브(애드혹도) 후에만 동작해, 전화기에 인스톨 합니다.

이걸 알아내는 데 이틀 정도 걸려서 누군가 도움이 됐으면 좋겠어요.

는 어쩔 수 우우 we we we we we 。www.associated-domains 집에서는.entitlementsfilename을 클릭합니다.

        <string>applinks:www.yourdomain.com</string>
        <string>activitycontinuation:www.yourdomain.com</string>

가 냐냐 because because because because because를 사용한다면yourdomain.comwww.yourdomain.com-> 나서 content-type: application/json★★★★★★★★★★★★★★★★의 경우apple-app-site-association file

N.B.에 합니다.yourdomain.com ★★★★★★★★★★★★★★★★★」www.yourdomain.com

</ CHANGE:/ CHANGE:/FONT CHANGE:>를 호스트 하는 경우apple-app-site-association파이어베이스에서, 그것을 꼭 넣으세요./.well-known/★★★★★★★★★★★★★★★★★!그 Xcode의 URL, URL에 .apple-app-site-association directoryroot에 . 파이어베이스 엔지니어는 for for for, for이 for for for for for for for to to to to to to to to to to to to for for for for for for to to to to to to to to to to에 자동으로 응답하도록 만들었다./.well-known/apple-app-site-association커스텀 파일보다 우선하는 빈(올바른 형식) 연결 파일을 사용하여 아무것도 작동하지 않는 이유를 알 수 없습니다.

developer.apple.com에 접속하여 배포 프로파일 중 하나를 편집합니다.편집 페이지에서 앱 ID에 대한 팝업을 열면 앱 이름 목록이 표시되고 앱 이름 뒤에 괄호() 안에 실제ID가 모두 표시됩니다.팀 ID가 접두사로 있는 앱도 있고 없는 앱도 있습니다.( )의 팝업 메뉴에 표시되는 대로 Apple-app-site-association details 앱에 넣습니다.[ID]나는 앱과 그것의 유니버설 링크에 정확히 이 문제가 있었다.

저에게 있어서 문제는apple-app-site-associationApple 앱 링크는 가했 the the the를 추가했다.activitycontinuation이치노

{
  "activitycontinuation": {
    "apps": [
      "9JA89QQLNQ.com.apple.wwdc"
    ]
  },
  "applinks": {
    "apps": [],
    "details": [{
        "appID": "9JA89QQLNQ.com.apple.wwdc",
        "paths": [ "/wwdc/news/", "/videos/wwdc/2015/*" ]
      }]
  }
}

같은 문제/솔루션 조합을 본 적이 없어서 다른 사람이 같은 문제를 가지고 있을 경우를 대비해서 제 문제를 추가하는 것이 좋을 것 같습니다.

스킴(URL )을.APP_TARGET > Info > URL Types여기서부터의 URL 스킴을 Firebase 콘솔에 맞추어 설정했지만, 아직 동작하고 있지 않았습니다.

제 문제는 사실 두 가지였습니다.

서명 자동 관리 체크박스가 켜져 있는지 확인합니다.

signing" 데모 앱을 이므로, 이 "Automatically manage signing", "Automatically manage signing", "Automatically manage signing"을 확인하시기 바랍니다.파이어베이스 아이디입니다. 되었습니다는 "Apple Developer Account"에서 할 수 .)APP_TARGET > General > Signing > Signing Certificate.에겐 에에 like like처럼 .iPhone Developer: My Name (TEAM_ID)를 참조해 주세요.

팀의 프레픽스URL 유형의 번들 ID에 대한 ID

Firebase 콘솔과 Xcode에서 일치하는지 확인한 후 다음 문제는 URL 스킴의 식별자입니다.여기서 번들 ID를 사용하는 것이 일반적이지만 Firebase 콘솔에서는 사용자가 지정한 팀 ID를 사용하여 이 ID 앞에 붙이기 때문에 Xcode의 URL 유형 섹션에 있는 ID 앞에 붙여야 했습니다.

두 후 후GoogleService-Info.plist파일 다이나믹 링크를 여는 데 문제가 없었습니다.

이틀간의 절망 끝에 드디어 고친 것 같아요.저의 솔루션은 다음과 같습니다.

오래된 앱은 새로운 앱과 다른 앱 접두사를 사용하는 것 같습니다.최신 앱에서는 팀 ID만 이 용도로 사용합니다.앱 프리픽스와 팀 ID가 동일하지 않은 경우 Apple 앱 사이트 연결 파일에서 액티비티 계속 필드를 지정해야 합니다.

{
    "activitycontinuation": {
        "apps": [
            "YOUR_APP_PREFIX.de.company.app"
        ]
   },
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "YOUR_APP_PREFIX.de.company.app",
        "paths": ["/*"]
      }
    ]
  }
} 

또, 지옥에서 체험한 것은, 앱을 삭제하고, 디바이스를 재기동하는 것만이, 이 파일을 강제적으로 갱신할 수 있는 유일한 방법인 것 같습니다.

위의 모든 답변을 구현하여 AAA 파일이 mpoisot의 답변과 함께 다운로드되고 있음을 테스트한 후 Xcode에서 관련 도메인을 다음과 같이 추가한 것이 문제였습니다.

applinks:example.com

노트 앱에서 사용하려고 했습니다.

Https://example.com

왜냐하면 내 AASA는 서명되지 않았고 HTTPS를 통해 서비스를 제공하고 싶었기 때문에 노트 앱에서 사용하려고 했을 때 작동했습니다.

example.com

Xcode 개발 빌드 또는 Testflight 배포 빌드와 함께 iOS 12.1.2를 사용하는 물리적 디바이스에서 작동합니다.

에는 서버에 .apple-app-site-association 유형: 파내 ( 용내::::내 file file file file ):application/pkcs7-mime과 같은했습니다.nginx 음음 음음 。

location ~ /.well-known/apple-app-site-association {
         default_type application/pkcs7-mime;
 }

다른 사람들이 제안했듯이, 저도 다음 사항을 확인해야 했습니다.

  • apple-app-site-associationhttps://developer.apple.com/documentation/safariservices/supporting_associated_domains 를 포맷
  • 하여 TEAM ID가 합니다."appIDs": [ "TEAM_ID.my-app-bundle-id"],
  • 에서 앱 은 Xcode로 합니다.applinks:

Console 앱에서 다른 사용자의 스크린샷에 표시된 "성공" 메시지는 본 적이 없습니다.에서는 계속...이 나왔다.Entry [...] needs its JSON updated because the app PI changed이치노

, 「」, 「」를 ,apple-app-site-association브라우저에서는 파일이 표시되지 않고 다운로드 됩니다만, 제 경우는 문제가 되지 않았습니다.

또한 항상 그렇듯이 실제 기기를 사용하여 변경 시마다 앱을 재설치하고 기기를 재시작하여 앱 버전 번호를 증가시킬 수 있습니다.

언급URL : https://stackoverflow.com/questions/32751225/ios-universal-links-are-not-opening-in-app