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


109

그래서 저는이 튜토리얼을 정확히 따라했고 제공된 것과 동일한 값을 사용했습니다 : 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

하지만 질치.

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


2
당신이 어떤 단계 놓치지하기 위해 여기에 체크 아웃 stackoverflow.com/questions/35609667/...을
Vineet Choudhary

답변:


189

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

  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의 작동 방식과 존재하는 엣지 케이스에 대해 매우 궁금합니다. 행운을 빕니다.


1
같은 것. 그래서 이상한. 때로는 앱을 직접 열고 때로는 webView를 엽니 다. 나는 그들이 문서를 명확하게했으면 좋겠다. 이 기능의 작동이 비정상적 임
Legolas

4
1)과 관련하여 https를 통해 제공하는 경우 apple-app-site-association 파일에 더 이상 서명 할 필요가 없습니다.
Jeremy Hicks

11
iOS 기기를 다시 시작하는 것도 도움이 될 수 있습니다. 나는 모든 설정과 구성을 세 번 확인했고 모든 것이 정확하다고 확신했지만 여전히 작동하지 않습니다. 그런 다음 다른 장치로 시도했는데 완벽하게 작동했습니다. 그때 ... 원래 장치에서 응용 프로그램을 삭제 한 장치를 다시 시작하고 그냥 작동 응용 프로그램을 다시 설치
mathz

4
누군가가 실수로 앱의 오른쪽 모서리에있는 웹 사이트 링크를 눌렀을 때 Safari 대신 앱으로 돌아가는 방법은 무엇입니까?
iEngineer

3
나는 어디서도 앱 배너에서 열기를 얻지 못했습니다. 긴 검색 후 해결 방법은 다음과 같습니다. Notes 앱에 사이트 링크 (범용 링크)를 입력합니다. 이제 완료를 클릭하십시오. 링크가되면 길게 클릭하고 "Open in AppNAME-HERE"를 선택하십시오!
kishorer747 2016

64

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

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

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

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


4
또한 테스트 장치에서 앱을 완전히 삭제 한 다음 마침내 작동하기 전에 다시 빌드하고 실행해야했습니다.
Phil Andrews

14
당신은 내 하루를 저장합니다. 이것은 XCode가 나를 위해 인 타이틀먼트 파일을 생성했지만 내 빌드에 포함되지 않았습니다. 수동으로 해당 상자를 클릭해야했습니다.
cham

12
빌드에 권한 파일을 포함하면 문제도 해결되었습니다. Xcode 8에서는 File Inspector의 대상 멤버 자격 확인란이 실제로 비활성화되어 있다는 점에 주목할 가치가 있습니다. 빌드 설정으로 이동하여 권한 파일을 리소스 복사 단계에 추가해야했습니다.
Charles A.

5
@cham : "XCode가 나를 위해 인 타이틀먼트 파일을 생성했지만 빌드에 포함되지 않았습니다. 수동으로 해당 상자를 클릭해야했습니다."에 대해 자세히 설명해 주시겠습니까?
Thang Pham

6
@AwaisFayyaz 빌드 단계> 번들 리소스 복사로 이동합니다. 더하기 기호를 클릭 한 다음 자격 파일을 추가합니다.
s.zainulabideen

36

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

그것이 말하는 곳 :

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

그것은 말해야한다

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

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

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


2
+1, 이것은 나를 많이 도왔습니다. 그것이 작동하지 않은 이유를 알아내는 반나절을 보내고,이 날의 경우가 될 듯
이보 베 커스에게

당신은 내 하루를 저장했습니다. 사실 내 앱은 오래 전이고 앱 접두사는 팀 ID와 다릅니다.
Ti3t

이것이 나를 위해 일하는 유일한 것입니다. 감사합니다!
dhin

이것이 나를위한 해결책이었습니다. 훌륭한 조언.
vincenth

33

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

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

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


2
훌륭한 팁! 나는 https : //를 applinks : entitlement에 추가하고 내가 듣고 싶은 전체 경로를 지정했는데, 둘 다 실수였다. 내가 지정되었다 example.com/path을 난 단지 지정해야하는 위치 * 내 domain.com과 example.com에서 AASA 파일은 내 응용 프로그램의 번들 ID에 대한 경로를 지정합니다
누만 타리크

3
현금 보너스를 송금 할 수 있습니까 ?? 이 끔찍한 범용 링크 설정의 모든 단계를 이틀 동안 보냈지 만, 당신의 접근 방식을 시도하기 전까지는 아무것도 도움이되지 않았습니다. 내 도메인에 대한 firebase의 루트 폴더에 내 연결 파일을 호스팅하는 것이 정말 안타깝게도 Apple이 먼저 .well-known / 하위 디렉터리를 쿼리하고 firebase가 자신의 (!) 올바른 연결 파일로 응답하는 것으로 나타났습니다. 연결된 앱이 없습니다. 이걸 어떻게 알아 내야 돼, 애플?
nalexn

Ahhh 큰 힌트! Xcode 콘솔 출력 만보고이 장치 콘솔에 대해 몰랐습니다. 내 문제는 3 개의 딥 링크 도메인 중 2 개가 작동했지만 마지막 도메인은 아닙니다. 그리고 콘솔에서 마지막 도메인에서 "appllinks : <domain>"(2 L' s)으로 철자가 틀렸다는 것을 알았습니다. 어쨌든, 유니버설 링크가 실제로 등록되었는지 확인하는 좋은 방법에 대해 다시 한 번 감사드립니다! (콘솔 로그도 찾았습니다. 앱을 제거 할 때 링크 제거 : +1)
Arno Teigseth

1
기본적으로 장황해야합니까? 자세한 로그를 얻지 못하기 때문에 .. 이것은 작업이 성공하지 못했음을 의미합니까?
Nicholas Allio

26

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

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

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

2
의 옵션이 없습니다 app만, 개방 복사 등의 목록을 읽기에 추가
iEngineer

1
이 문제를 디버깅하는 데 거의 미친 듯했지만 이것이 해결책 또는 나였습니다. 올바르게 설정되지 않았고 Mail 앱이 Safari에서 링크를 열면 항상 Safari에서 열립니다. 모르겠지만, 한 번 길게 눌러-> 'myapp'에서 열기 ... 이제 링크가 올바르게 열립니다!
herbert

1
이 솔루션에 감사드립니다. 나는 거의 하루 동안 이것에 갇혀 있었다. 당신은 내 하루를 구했습니다.
앤드류


18

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

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

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


17

Universal Link를 올바르게 구현했는지 확인하는 빠른 단계입니다.

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

  • Notes 앱을 열고 앱을 열 수있는 링크를 입력합니다. 완료를 탭합니다. 링크가 노란색으로 바뀌고 링크를 탭하면 Safari가 아닌 앱이 열립니다.

  • 링크 경우 http://yourDomain.com이 응용 프로그램을 실행하지 않는 시도 http://yourDomain.com/yourFolder/을

  • Safari에서 컨텍스트 메뉴에 safari에서 "[your app name]에서 열기"가 표시되지만 링크를 탭하면 앱을 시작하는 대신 safari 자체에서 링크가 열립니다.

    ㅏ. 링크를 클릭했을 때 열린 사파리 페이지를 '끌어서 새로 고침'하는 것처럼 아래로 당겨보십시오. 앱을 열 수있는 배너가 나타납니다. 배너를 탭하여 앱을 열고, 홈 버튼을 눌러 앱을 닫고, Safari로 돌아가서 링크를 다시 탭하여 앱을 실행 해보십시오. 이번에는 배너를 탭하면 앱에서 링크를 열 수있는 환경 설정이 저장 되었어야하므로 앱이 시작되어야합니다.

    비. a. 단계 후에도 앱이 실행되지 않으면 gmail과 같은 웹 메일에 링크를 메일로 보내고 safari에서 웹 메일 사이트를 열고 링크를 클릭 해보십시오. 이것이 작동한다면 링크와 동일한 도메인에서 앱을 시작하려고 시도했을 수 있습니다. 내가 본 바에 따르면 동일한 도메인에서 앱을 시작하면 대부분 실패합니다 . 아마도 safari는 링크가 사용자가있는 동일한 도메인에있을 때 대상 URL이 범용 링크인지 여부를 확인하지 않을 것입니다. 따라서 다른 도메인에서 앱을 시작해보십시오.


3
그것이 바로이 문제를 몇 시간 동안 처리해 왔으며 동일한 도메인에서 앱을 시작하면 대부분 실패합니다. 감사합니다 :)
maledr53

12

유니버설 링크를 통합 한 후 프로젝트 버전이나 빌드 번호를 높이는 것도 매우 중요합니다. 삭제 / 재설치하더라도 버전을 범프하지 않는 한 iOS는 링크를 선택하지 않습니다.


1
이! 번들 버전의 아이폰 OS는 이전 버전에서 캐시 된 결과를 사용하고 나는 위의 조언 모두를 통해 갈 것이라고 내 링크가 여전히 사파리를 실행 때문에 무슨 일이, 내 테스트가 실패의 원인이 된 완전히이었다 apple-app-site-association이는 잘못된 APPID 접두사했다
자이 장을

카일, 내가 당신을 사랑하는 것 같아요! 이 답변은 하루를 절약합니다. 감사합니다!
neiker

이것은 나에게 비밀 소스였습니다! 감사합니다 감사합니다!
nurider

10
  • 링크를 브라우저 URL 필드에 붙여 넣으면 범용 링크가 작동하지 않습니다.

  • 유니버설 링크 작업을 사용자 중심으로 <a href="...">요소를 클릭 도메인에서 . 예 : google.com에 bnc.lt를 가리키는 범용 링크가있는 경우 앱이 열립니다.

  • 유니버설 링크는 동일한 도메인에서 사용자 주도 요소 클릭 으로 작동하지 않습니다 . 예 : google.com의 다른 범용 링크를 가리키는 google.com의 범용 링크가있는 경우 앱이 열리지 않습니다.<a href="...">

  • 범용 링크는 <a>사용자 작업의 일부가 아닌 경우 자바 스크립트 (window.onload에서 또는 요소 에 대한 .click () 호출을 통해)를 통해 트리거 될 수 없습니다 .

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

세 번째 총알은 알아내는 데 약 하루가 소요되었습니다.


1
세 번째 총알, 여기도 마찬가지입니다. 그것을 알아내는 데 많은 시간을 낭비했습니다. 애플은 심지어 멋진 매우 바보 같은 설명이있다 : 자신을보고 "아이폰 OS는 사용자가 가장 가능성이 의도 존중하고 Safari에서 링크를 엽니 다" 여기 .
jox

3 탄 TOP!
Byteros

10

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

xcrun simctl openurl booted yourapp_or_http://yourlink

예를 들면 :

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


1
이 기능이 작동하지 않고 항상 Safari가 열립니다. 그래도 실제 장치에서 실행할 때 작동합니다. 시뮬레이터없이 디버깅 / 개발하는 것이 조금 더 고통스럽기 때문에 어떤 아이디어라도 감사 할 것입니다.
chib

7

여기 사람들이 다른 솔루션을 찾고있는 경우, 많은 문제가 발생하여 많은 골칫거리를 유발하는 것을 보았으므로 유니버설 링크 디버깅에 대한 전체 단계를 통합했습니다.

확인 해봐:

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

디버깅 가이드 미리보기

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

iOS 딥 링킹 설정 가이드

도움이 되었기를 바랍니다.


매우 도움이되었습니다, 감사합니다! 실제 장치에서 실행할 때 나를 위해 일했지만 iOS 시뮬레이터는 아닙니다.
Josh Sklar

6

앞으로 더 많은 사람들이 저와 같은 문제에 직면 할 경우를 대비해 제가 발견 한 것들을 추가 할 것이라고 생각했습니다. 대부분 인증 오류와 관련이 있습니다.

애플이 명시 적으로 언급하지 않더라도 apple-app-site-association 파일은 서명 된 경우에도 https를 통해 제공되어야합니다. https에 사용되는 인증서도 Apple에서 신뢰해야합니다. 따라서 설정-> 일반-> 프로필에서 장치에 추가 된 인증서는 safari에서 https를 허용하지만 범용 링크가 작동하는 것을 허용하지 않습니다.

장치 로그에서 장치와 서버 간의 인증 오류에 대해 다음과 같은 값이 인쇄 "TrustResultValue" : 4됩니다. TrustResultValue5 개 수단 인증서가 잘못된 도메인 (예. test.com www.test.com에서 제공). TrustResultValue4 개 수단 인증서의이 사용하기 위해 신뢰할 수 없습니다.

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

  1. 앱을 제거하십시오. 이는 설치시 파일이 다운로드되기 때문에 필요합니다.

  2. 서버가 제대로 제공되지 않도록 apple-app-site-association합니다.

  3. xcode에서 창-> 장치를 열고 장치를 선택합니다.

  4. 창 하단에있는 삼각형을 클릭하여 장치 로그를 엽니 다.

  5. 관련이있을 수있는 이전 로그를 지우려면 휴지통을 클릭하여 로그를 지우십시오.

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

  7. 앱이 실행 된 후 장치가 파일을 올바르게 요청하는 경우 장치 로그에 "apple-app-site-association"을 검색하여 찾을 수있는 오류가 포함되어야합니다.

apple-app-site-association파일이 제대로 제공 되면 (2 단계가 생략 됨) 오류가 없어야합니다. 문제인 경우 인증 오류가 대신 표시 될 수 있습니다.


1
Charles Proxy를 사용하여 SSL 스푸핑을 수행하고 있었는데 이로 인해 신뢰 값이 4가되었습니다. 프록시를 끄면 성공했습니다.
Ben Flynn

6

가장 일반적인 원인은 사용자가 오른쪽 상단을 탭하여 iOS에 향후 앱 (이 경우 Uber)을 열지 않도록 지시하는 것입니다.

수정하려면 아래로 당겨 스마트 배너를 표시하고 열기를 탭합니다.

Safari에서 아래로 당겨 다시 엽니 다.

이후에 앱을 열 때 "기억"합니다.


5

다음 위치 에 apple-app-site-association 파일을 추가했습니다.

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

iOS 9에서는 제대로 작동했지만 iOS 10에서는 작동하지 않았습니다.

문제는 .well-known 경로에있는 것으로 보입니다 .

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

제 생각에는 .well-known 경로가 제대로 작동하지 않으면 범용 링크가 끊어집니다.


설명서에는 "파일은 리디렉션없이 HTTPS를 통해 액세스 할 수 있어야합니다."라고 명시되어 있습니다.
eonil

매뉴얼에는 "iOS 9.3.1 이상에서 실행되는 앱의 경우 파일 서명 여부에 관계없이 apple-app-site-association 파일의 압축되지 않은 크기가 128KB를 넘지 않아야합니다."라고 명확하게 명시되어 있습니다. 이 파일은 154KB입니다.
Roberto

iOS11에서 서버는 example.com/.well-known/apple-app-site-association에 대해 명시 적으로 404 상태를 반환해야하며 swcd는 루트로의 폴백을 사용합니다. example.com/apple-app-site-association . 당신은 신속 우체부와 같은 도구를 사용하여 반환 HTTP 상태를 확인할 수 있습니다
최대 Odnovolyk

4

나는 그것을 작동시킬 수 있었지만 상당한 시간과 노력이 필요했습니다. 참고 당신이 서명하지 않는 한 apple-app-site-association 파일을 (서명은 선택입니다!)합니다 Safari에서 링크를 도청 하지 귀하의 응용 프로그램을 열 (그것은 나에게 두통이 많이 발생했습니다).


1
궁금합니다. Apple은 문서 에서 순수 범용 링크 및 iOS9에서의 사용을 위해 서명이 필요 없다고 명시합니다. iOS 8 Handoff / 공유 웹 자격 증명을 지원하려는 경우에만 서명해야합니다. 흥미 롭군요! 저도 같은 문제가있어서 사인을 해보겠습니다.
wrtsprt

서명은 실제로 선택 사항입니다. Mobile Safari에서 링크를 탭하여 기본 iOS 앱 열기를 트리거하는 것을 "웹 브라우저에서 기본 앱으로 핸드 오프"라고 합니다. activitycontinuation이 경우 apple-app-site-associationjson 파일에 속성을 추가해야 합니다. developer.apple.com/library/ios/documentation/UserExperience/…
Devy

3

이것을 알아내는 데 하루가 가까워졌습니다. 내가 가진 문제는 XCode에서 업데이트 된 프로비저닝 프로파일을 다운로드하지 않는 것이 었습니다 (이 후에도 XCode를 다시 시작했습니다).

(환경 설정> 계정> 세부 정보보기> 모두 다운로드)


3

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

로부터 지원 유니버설 링크 : 앱 검색 프로그래밍 가이드


6
시뮬레이터에서 작동하는 범용 링크를 얻은 사람이 있습니까? 나는 수없이 시도했지만 결코 작동하지 않습니다. 그래도 동일한 흐름의 실제 장치를 사용하여 작동합니다.
Tony

나도 이것을 테스트 할 수 없었습니다. Safari가 시뮬레이터에서 범용 링크를 트리거하도록 시도하는 것은 물리적 장치에서 제대로 작동한다는 사실에도 불구하고 쓸데없는 일입니다.
Albert Bori 2016

시뮬레이터에서도 작동하게 할 수 없었습니다. @AlbertBori이 작동하게 되었습니까?
chib

나는 그들이 시뮬레이터에서 작동하지 않는다고 거의 확신 합니다. 나는 다른 모든 함정에 대해 잘 알고 있으며, 시뮬레이터에서 작동하도록 만들 수 없습니다 ..
Fattie

3

이틀 후에는 이런 종류의 링크가 (지점에서)

applinks : xxxx.app.link

응용 프로그램을 보관 (Ad-hoc) 한 후에 만 ​​작동하고 휴대폰에 설치합니다.


3

당신이 당신을 호스팅하는 경우 apple-app-site-association중포 기지 에 넣어 있는지 확인 /.well-known/하위 디렉토리! Xcode는 해당 URL을 먼저 쿼리하고 성공하면 apple-app-site-association루트 디렉토리에서 쿼리를 시도하지 않습니다 . 어떤 이유로 Firebase 엔지니어는 호스팅 된 웹 사이트가 /.well-known/apple-app-site-association사용자 지정 파일을 재정의하는 빈 (그러나 올바른 형식의) 연결 파일 로 자동 응답하도록 만들었 으므로 아무 것도 작동하지 않는 이유를 알 수 없습니다.


2
드디어! 감사합니다. 어딘가에 기록되어 있습니까? Firebase는 어딘가에 문서화해야합니다.
Berkay Turancı

2

developer.apple.com으로 이동하여 배포 프로필 중 하나를 편집합니다. 편집 페이지 에서 앱 이름 목록을 표시하는 앱 ID 팝업을 열 수 있으며 앱 이름 뒤의 () 둥근 괄호 안에 모든 실제 앱 ID가 표시 됩니다. 일부 앱은 팀 ID를 접두사로 사용할 수 있지만 일부는 그렇지 않습니다 . () 안의 팝업 메뉴에 표시된 내용을 정확히 사용하고 apple-app-site-association 세부 정보 appID 필드에 넣습니다. 앱과 범용 링크에서 정확히이 문제가 발생했습니다.


2

저에게 문제는 apple-app-site-association파일로 밝혀졌습니다 . Apple의 문서에 따르면 applinks 매개 변수 만 필요합니다. activitycontinuation매개 변수를 추가했고 작동했습니다.

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

3 년 후 우리는이 정확한 문제에 부딪 혔습니다. 추가 activitycontinuation는 우리를 위해 그것을 고친 것입니다.
readyornot

2

나를 위해 작동하는 똑같은 문제 / 솔루션 콤보를 실제로 보지 못 했으므로 누군가가 같은 문제를 겪을 경우 내 것을 추가하는 것이 좋습니다!

내 앱의 경우 맞춤 URL 스키마 (에서 설정 APP_TARGET > Info > URL Types)를 사용하고 있으며 여기에서 Firebase 콘솔로 URL 스키마를 설정하여 일치하도록 설정했지만 여전히 작동하지 않았습니다.

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

자동 서명 관리를 선택하는지 확인하십시오.

저와 같이 Xcode의 "자동으로 서명 관리"설정을 확인하는 경우 간단한 데모 앱을 만들려고했기 때문에 사용되는 TeamID가 Firebase 콘솔의 TeamID와 일치하는지 확인해야합니다. 원래 Apple 개발자 계정으로 이동하여 멤버십 페이지에서 팀 ID를 복사했지만 나중에 Xcode에서 사용하는 실제 ID가 다른 것을 확인했습니다. (당신은 APP_TARGET > General > Signing > Signing Certificate.나를 위해 그것을 보았습니다 에서 찾을 수 있습니다 iPhone Developer: My Name (TEAM_ID)).

URL 유형의 번들 식별자에 TeamID 접두사를 추가하세요.

Firebase 콘솔과 Xcode에서 이러한 항목이 일치하는지 확인한 후 다음 문제는 URL 체계의 식별자였습니다. 여기에서는 번들 식별자를 사용하는 것이 일반적이지만 Firebase는 실제로 Firebase 콘솔에서 제공 한 팀 ID를 접두사로 지정하므로 Xcode의 URL 유형 섹션에서도 식별자에 접두사를 추가해야했습니다.

이 두 가지를 수정하고 GoogleService-Info.plist파일을 다시 다운로드 한 후 동적 링크를 여는 데 문제가 없었습니다.


2

이틀간의 절망 끝에 마침내 고친 것 같습니다. 내 해결책은 다음과 같습니다.

오래된 앱은 최신 앱과 다른 앱 접두사를 사용하는 것 같습니다. 최신 앱은 이러한 목적으로 만 팀 ID를 사용합니다. 앱 접두사와 팀 ID가 동일하지 않은 경우 Apple 앱 사이트 연결 파일에서 활동 연속 필드를 지정해야하는 것 같습니다.

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

지옥 타기 중에 경험 한 또 다른 점은 앱을 삭제하고 장치를 다시 시작하는 것이이 파일을 강제로 새로 고치는 유일한 방법 인 것 같습니다.


1

나에게 내 오류는 우리 사이트가 www.domain.com을 domain.com으로 리디렉션하므로 모든 www.domain.com/*이 실패합니다. 도움이 되었기를 바랍니다.


1

캘린더 앱을 사용하여 iOS 시뮬레이터에서 유니버설 링크를 테스트 할 수있었습니다.

방금 이벤트를 만들고 이벤트 URL필드 에서 테스트하고 싶은 URL을 추가했습니다 . 그런 다음 생성 된 이벤트를 볼 때 URL 링크를 탭하면 앱이 열립니다.


이것은 나를 위해 작동하지 않는 것 같습니다. 시뮬레이터에서 작동하도록 모든 것을 시도했지만 아무 소용이 없습니다. 실제 장치에서는 잘 작동하지만 개발 / 디버그에는 적합하지 않습니다. 링크를 길게 눌러 봤는데 "앱에서 열기"옵션이 없습니다.
chib

1

이 기능을 사용하기 위해 하루를 보낸 후 휴대 전화를 다시 시작하면 문제가 해결되었습니다.

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


1

ios13의 경우 새로운 형식이 있습니다. https://developer.apple.com/documentation/safariservices/supporting_related_domains_in_your_app?language=objc에서 확인 하세요.

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

{
  "applinks": {
      "details": [
           {
             "appIDs": [ "ABCDE12345.com.example.app" ],
             "components": [
               {
                  "/": "/my-link/*",
                  "exclude": true,
                  "comment": "Matches any URL whose path starts with /my-link/ and instructs the system not to open it as a universal link"
               }
             ]
           }
       ]
   },
   "webcredentials": {
      "apps": [ "ABCDE12345.com.example.app" ]
   }
}

당신은 추가해야 할 것 "exclude": true으로 components하기 위해 객체 comment진실
skornos

@skornos 좋은 지적입니다. 내 대답을 수정하겠습니다.
Anita

0

이 페이지를 찾는 미래 독자를 위해 ...

비슷한 상황이있었습니다. 그러나 내 상황에서 iOS10은 AOK로 작동하고 내가 무엇을했는지 (빌드 번호 범프, 삭제 / 재설치 등) 상관없이 iOS9는 작동을 거부하는 것처럼 보였습니다.

나는 iOS10에서 이것으로 왔고 iOS9를 지원해야했습니다. 당시 여기에있는 문서 ( https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html) 에는 파일이 웹 서버의 루트에 위치 할 수 있다고 명시되어 있습니다. (예 /apple-app-site-association:) 또는 .well-known 폴더 (예 :) /.well-known/apple-app-site-association. 비슷한 파일에 .well-known 폴더를 사용하는 Android도 지원하기 때문에 두 가지를 모두 넣기로 결정했습니다.

iOS10에 새로 설치하는 경우 루트 파일을 명확하게 요청하고 실패한 다음 .well-known 파일을 요청하고 성공합니다.

iOS9의 경우 루트 파일을 명확하게 요청하고 실패하며 다른 작업은 수행하지 않습니다.

해결 방법 : iOS9를 지원하는 경우 파일을 /apple-app-site-association.


0

내 경우 내 오류는 쿼리 매개 변수를 경로에 넣는 것입니다.

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TEAM_ID.BundleIdentifier",
                "paths": [ "/auth-ui/hub?target=confirm&*" ]
            }
        ]
    }
}

경로에서 '? target = confirm & *'을 제거하면 작동하기 시작합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.