Liên kết chung của iOS không mở trong ứng dụng


109

Vì vậy, tôi đã làm theo hướng dẫn này chính xác và sử dụng các giá trị giống như các giá trị được cung cấp: https://blog.branch.io/how-to-setup-universal-links-to-deep-link-on-apple-ios-9

Tệp Hiệp hội Apple cũng đã sẵn sàng trong thư mục liên kết:
WEB_PAGE:PORT_NUMBER/apple-app-site-association

Mọi thứ dường như được sắp đặt ở bên này.

Tôi đã thêm các quyền, cập nhật hồ sơ cấp phép và mọi thứ đã được thiết lập.

Khi tôi chạy ứng dụng trên thiết bị của mình và mở liên kết http://WEB_PAGE:PORT_NUMBER, liên kết này sẽ luôn mở Safari.

Tôi thậm chí có các điểm ngắt trong phương pháp sau:

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

Nhưng zilch.

Có ai hoàn thiện điều này? Có điều gì tôi đang thiếu?


2
kiểm tra ở đây để đảm bảo bạn không bỏ lỡ bất kỳ bước nào stackoverflow.com/questions/35609667/…
Vineet Choudhary

Câu trả lời:


189

Có một số vấn đề có thể xảy ra.

  1. Hãy thử dán miền của bạn vào trình xác thực liên kết này và đảm bảo rằng không có vấn đề gì: https://limitless-sierra-4673.herokuapp.com/ (ghi có cho ShortStuffSushi - xem repo )

  2. iOS ghi lại thông báo lỗi trong nhật ký hệ thống nếu bạn không thiết lập TLS đúng cách trên miền được chỉ định trong các quyền của bạn. Nó được chôn trong nhật ký hệ điều hành, không phải nhật ký ứng dụng. Thông báo lỗi sẽ như thế nào 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. Thông báo lỗi được lấy từ đây , hướng dẫn nhanh (không đầy đủ) về cách sử dụng CloudFlare cho TLS tại đây .

  3. Trong thử nghiệm cá nhân của tôi, nhấp / nhập liên kết trong Safari chưa bao giờ mở ứng dụng trực tiếp. Nhấp từ các ứng dụng khác (iMessage, Mail, Slack, v.v.) đã hoạt động. Những người khác đã báo cáo rằng việc nhấp vào liên kết trong kết quả tìm kiếm của Google đã mở ứng dụng trực tiếp.

  4. Lưu ý rằng nếu Liên kết chung thành công trong việc mở ứng dụng của bạn và sau đó bạn nhấp qua Safari (bằng cách nhấn vào trang web của bạn ở góc trên cùng bên phải của thanh điều hướng trong ứng dụng), thì iOS sẽ ngừng mở ứng dụng khi bạn truy cập URL đó . Sau đó, trong Safari, bạn có thể kéo xuống để hiển thị biểu ngữ ở đầu trang với "Mở". Tôi đã lãng phí rất nhiều thời gian cho việc này. Lưu ý rằng việc nhấp qua trang web => tắt UL có vẻ như đường dẫn cụ thể , dựa trên các đường dẫn bạn chỉ định trong tệp apple-app-site-assocation. Vì vậy, nếu bạn có các tuyến đường riêng biệt yoursite.com/a/*yoursite.com/b/*nếu bạn nhấp vào yoursite.com/a/*và ứng dụng đó mở trực tiếp ứng dụng của bạn, thì bạn sẽ có tùy chọn ở góc trên cùng bên phải của ứng dụng để nhấp qua yoursite.com/a/*. Nếu bạn làm điều đó, các lượt truy cập tiếp theoyoursite.com/a/*sẽ mở trong trình duyệt, không phải ứng dụng. Tuy nhiên, yoursite.com/b/*sẽ không bị ảnh hưởng và vẫn mở ứng dụng của bạn trực tiếp.

Hãy cho tôi biết nếu bạn phát hiện ra vấn đề là gì. Cá nhân tôi rất tò mò về cách Universal Links hoạt động và tồn tại những trường hợp nào. Chúc may mắn.


1
Điều tương tự. Thật ki cục. Đôi khi nó mở ứng dụng trực tiếp, đôi khi nó mở webView. Tôi ước họ làm cho tài liệu rõ ràng. Hoạt động của tính năng này rất thất thường
Legolas

4
Về 1), bạn không cần phải ký vào tệp liên kết apple-app-site-site của mình nữa nếu bạn đang phân phối nó qua https.
Jeremy Hicks

11
Khởi động lại Thiết bị iOS của bạn cũng có thể hữu ích. Tôi đã kiểm tra ba lần tất cả các cài đặt và cấu hình và tôi hoàn toàn chắc chắn rằng mọi thứ đều chính xác nhưng nó vẫn không hoạt động. Sau đó, tôi đã thử với một thiết bị khác và nó hoạt động hoàn hảo. Sau đó, tôi đã xóa ứng dụng khỏi thiết bị gốc, khởi động lại thiết bị và cài đặt lại ứng dụng, sau đó nó chỉ hoạt động ...
mathz

4
Làm thế nào để quay lại ứng dụng thay vì safari nếu ai đó vô tình nhấn vào liên kết trang web trên góc phải của ứng dụng?
iEngineer

3
Tôi không nhận được biểu ngữ Mở trong Ứng dụng ở bất kỳ đâu. Sau thời gian dài tìm kiếm, đây là một giải pháp: Nhập bất kỳ liên kết nào cho trang web của bạn trong ứng dụng Notes (là một liên kết phổ biến). Bây giờ bấm vào Xong. Khi nó trở thành một liên kết, hãy nhấp và giữ nó và chọn "Mở trong AppNAME-HERE"!
kishorer747

64

Có rất nhiều cách mà điều này có thể sai. Hai điểm khiến tôi gặp rắc rối:

  • Trong Xcode, khi bạn thêm quyền đối với Tên miền được liên kết, mỗi mục nhập cần bắt đầu bằng applinks:và sau đó là tên miền của bạn. Vd applinks:www.apple.com.

  • Mặc dù Xcode đã tạo một tệp quyền cho tôi, nhưng nó không bao gồm trong bản dựng của tôi: Tôi phải nhấp vào hộp đó theo cách thủ công.

Và vâng, sau khi làm điều đó, không cần thiết phải ký vào apple-app-site-associationtệp: nó chỉ là văn bản thuần túy và nó hoạt động, miễn là nó được phân phối qua HTTPS. (Tuy nhiên, bạn vẫn cần phải ký tên nếu bạn đang hỗ trợ iOS 8.)


4
Tôi cũng đã phải xóa hoàn toàn ứng dụng khỏi thiết bị thử nghiệm, sau đó xây dựng và chạy lại trước khi nó hoạt động.
Phil Andrews

14
bạn tiết kiệm ngày của tôi, đây là vấn đề của tôi, mặc dù XCode đã tạo một tệp quyền cho tôi, nó không bao gồm trong bản dựng của tôi: Tôi phải nhấp vào ô đó theo cách thủ công.
cham

12
Bao gồm cả tệp quyền trong bản dựng cũng đã khắc phục sự cố cho tôi. Cần lưu ý rằng trong Xcode 8, các hộp kiểm thành viên đích trong Trình kiểm tra tệp thực sự bị vô hiệu hóa. Tôi phải đi đến cài đặt bản dựng và thêm tệp quyền vào giai đoạn Tài nguyên sao chép.
Charles A.

5
@cham: các bạn có thể giải thích thêm về "mặc dù XCode đã tạo một tệp quyền cho tôi nhưng nó không có trong bản dựng của tôi: tôi phải nhấp vào ô đó theo cách thủ công."
Thang Pham

6
@AwaisFayyaz Chuyển đến giai đoạn xây dựng> Sao chép tài nguyên gói. Nhấp vào dấu cộng sau đó thêm tệp quyền của bạn.
s.zainulabideen

36

Rõ ràng có lỗi trong tài liệu tạo tệp liên kết cho Liên kết chung .

Nơi nó nói:

Giá trị của khóa appID là ID nhóm của ứng dụng và ID gói

nó nên nói

Giá trị của khóa appID là Tiền tố của ứng dụng và ID gói

Đối với hầu hết các ứng dụng, có vẻ như ID nhóm và tiền tố ứng dụng giống nhau, nhưng nếu ứng dụng của bạn đã ở trong cửa hàng nhiều năm, các giá trị này có thể khác nhau.

Để tìm giá trị này, hãy mở Trung tâm thành viên trên https://developer.apple.com và xem "Chứng chỉ, Số nhận dạng & Hồ sơ", nhấp vào "Số nhận dạng", sau đó nhấp vào "ID ứng dụng" trong bảng bên dưới "Số nhận dạng". Tìm ứng dụng của bạn và sử dụng giá trị Tiền tố và ID gói ở đó để tạo AppID của bạn cho tệp liên kết.


2
+1, Điều này đã giúp tôi rất nhiều. Dành nửa ngày để tìm ra lý do tại sao nó không làm việc và điều này dường như là trường hợp đối với tôi
Ivo Beckers

bạn đã lưu ngày của tôi, bằng chứng là ứng dụng của tôi đã có từ lâu và tiền tố ứng dụng khác với ID nhóm.
Ti3t

đây là điều duy nhất phù hợp với tôi. cảm ơn bạn!
'19

Đây là giải pháp cho tôi. Lời khuyên tuyệt vời.
vincenth

33

Để giúp gỡ lỗi vấn đề này, hãy tìm kiếm "swcd" trong đầu ra bảng điều khiển của thiết bị khi cài đặt ứng dụng của bạn để xem việc đăng ký liên kết chung của bạn có hiệu quả hay không.

  1. Sử dụng thiết bị thực tế, không phải thiết bị mô phỏng.
  2. Xóa ứng dụng khỏi thiết bị của bạn.
  3. Kết nối thiết bị với máy tính của bạn và xem đầu ra bảng điều khiển của thiết bị bằng xcode. (cửa sổ -> thiết bị -> [thiết bị của bạn] -> mở bảng điều khiển). Giữ cửa sổ này mở.
  4. Cài đặt ứng dụng của bạn và để nó khởi chạy.
  5. Lọc đầu ra bảng điều khiển thành "swcd". Nếu nó thành công, bạn sẽ thấy một cái gì đó giống như ảnh chụp màn hình sau đây. Nếu nó không thành công, bạn sẽ thấy thứ khác. Nếu bạn không nhìn thấy bất cứ điều gì thì bạn đã nhầm lẫn một thứ cơ bản như thêm quyền của Tên miền liên kết.

Đã thêm liên kết ứng dụng thành công


2
Mẹo tuyệt vời! Tôi đã thêm https: // vào các liên kết ứng dụng: quyền và cũng chỉ định đường dẫn đầy đủ mà tôi muốn lắng nghe. Cả hai đều là sai lầm. Tôi đã chỉ định example.com/path * trong đó tôi chỉ nên chỉ định domain.com của mình và tệp AASA tại example.com, sau đó chỉ định đường dẫn chống lại id gói ứng dụng của tôi
Numan Tariq

3
Tôi có thể chuyển tiền thưởng cho bạn không ?? Tôi đã dành 2 ngày để xem qua từng bước của thiết lập liên kết phổ quát kỳ lạ này, không có gì giúp ích được cho đến khi tôi thử cách tiếp cận của bạn. Tôi thực sự không may khi lưu trữ tệp liên kết của mình trên thư mục gốc của firebase cho miền của mình, và hóa ra trước tiên Apple truy vấn .well-known / subdirectory và firebase dường như phản hồi nó bằng tệp liên kết chính xác (!) Của riêng họ. không có ứng dụng nào được liên kết. Goshhh, làm thế nào tôi có thể tìm ra điều này, Apple?
nalexn

Ahhh gợi ý tuyệt vời! Tôi không biết về bảng điều khiển thiết bị này, chỉ nhìn vào đầu ra bảng điều khiển Xcode. Vấn đề của tôi là 2 trong số 3 miền liên kết sâu DID hoạt động, nhưng không phải là miền cuối cùng. Và ở đó trong bảng điều khiển, tôi thấy rằng đối với miền cuối cùng của tôi, tôi đã viết sai chính tả với "appllinks: <domain>" (2 L) Ôi trời… dù sao, một lần nữa, cảm ơn vì một cách tuyệt vời để kiểm tra xem Liên kết chung có thực sự được đăng ký hay không! (Tôi thấy nhật ký bảng điều khiển cũng đang Xóa các liên kết khi gỡ cài đặt ứng dụng: +1)
Arno Teigseth

1
nó được cho là dài dòng theo mặc định? Bởi vì tôi không nhận được nhật ký chi tiết như vậy .. điều này có nghĩa là hoạt động không thành công?
Nicholas Allio

26

Câu trả lời của St.derrick là thông tin.

Nhưng để kích hoạt lại các liên kết phổ quát để mở trong ứng dụng thay vì safari, chúng ta cần thực hiện điều sau.

  • Nhấn và giữ liên kết Universal trong Mail hoặc iMessage, sau đó bạn sẽ thấy các tùy chọn mở trong safari hay trong Ứng dụng.

2
Không có tùy chọn app, chỉ sao chép, mở, thêm vào danh sách đọc, v.v.
iEngineer

1
Gần như phát điên khi gỡ lỗi vấn đề này, nhưng ĐÂY là giải pháp hoặc tôi. Có thể nếu nó không được thiết lập đúng cách và ứng dụng Thư mở liên kết trong safari, nó luôn mở trong safari? không có ý kiến, nhưng tôi đã từng nhấn và giữ -> mở trong 'myapp' ... và bây giờ các liên kết mở chính xác!
herbert

1
Cảm ơn rất nhiều cho giải pháp này. Tôi đã bị mắc kẹt trong việc này gần một ngày. Bạn đã cứu ngày của tôi.
andrew


18

Tôi nhận ra rằng vấn đề đối với tôi là các liên kết đến thư mục gốc a (ví dụ http://example.com/:) không mở ứng dụng của tôi nhưng nếu tôi thêm đường dẫn (ví dụ. http://example.com/mypath) Thì nó hoạt động. Thêm "/"vào danh sách đường dẫn đã thu hút nó:

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

Như đã được trả lời bởi slutsker trong chuỗi Diễn đàn dành cho nhà phát triển Apple này .


17

Các bước nhanh để kiểm tra xem bạn đã triển khai Liên kết chung đúng cách chưa.

  • Nhấn và giữ vào liên kết mà bạn muốn khởi chạy ứng dụng. Bạn sẽ thấy thông báo "Mở trong [tên ứng dụng của bạn]" trong Menu ngữ cảnh.

  • Mở ứng dụng Ghi chú, nhập liên kết bạn muốn mở ứng dụng. Nhấn vào Xong. Liên kết sẽ chuyển sang màu vàng và nhấn vào liên kết sẽ mở ứng dụng của bạn chứ không phải Safari.

  • Nếu liên kết http://yourDomain.com không khởi chạy ứng dụng, hãy thử http://yourDomain.com/yourFolder/

  • Trong Safari, nếu Trình đơn ngữ cảnh hiển thị "Mở bằng [tên ứng dụng của bạn]" trong Safari, nhưng việc nhấn vào liên kết sẽ mở liên kết trong chính safari thay vì khởi chạy ứng dụng,

    a. Thử kéo xuống trang safari đã mở khi liên kết được nhấp vào giống như cách bạn 'kéo để làm mới'. Một biểu ngữ sẽ xuất hiện có thể mở ứng dụng của bạn. Nhấn vào biểu ngữ để mở ứng dụng, đóng ứng dụng bằng cách nhấn nút trang chủ, quay lại safari và thử khởi chạy ứng dụng bằng cách nhấn lại vào liên kết. Lần này, ứng dụng sẽ được khởi chạy vì việc nhấn vào biểu ngữ lẽ ra đã lưu tùy chọn mở liên kết trong ứng dụng.

    b. Nếu ứng dụng vẫn không được khởi chạy sau bước a., Hãy thử gửi liên kết đến một webmail như gmail và mở trang webmail trong safari và thử nhấp vào liên kết. Nếu điều này hiệu quả, có thể bạn đang cố khởi chạy ứng dụng từ cùng một miền với liên kết. Theo những gì tôi đã thấy, việc khởi chạy ứng dụng từ cùng một miền hầu như không thành công . Có lẽ safari sẽ không quan tâm đến việc kiểm tra xem url đích có phải là một liên kết phổ biến hay không, khi liên kết nằm trong cùng một miền mà người dùng đang truy cập. Vì vậy, hãy thử khởi chạy ứng dụng từ một miền khác.


3
Đó là nó, đã đối phó với vấn đề này trong nhiều giờ, KHỞI ĐỘNG ỨNG DỤNG TỪ CÙNG MIỀN LỖI NHIỀU NHẤT. Cảm ơn :)
maledr53

12

Điều cực kỳ quan trọng là tăng phiên bản dự án hoặc số bản dựng sau khi tích hợp các liên kết phổ quát. Ngay cả khi bạn xóa / cài đặt lại, iOS sẽ không nhận các liên kết trừ khi bạn thay đổi phiên bản.


1
Điều này! Phiên bản gói hoàn toàn là nguyên nhân khiến quá trình thử nghiệm của tôi không thành công, vì tôi sẽ thực hiện tất cả các lời khuyên ở trên và các liên kết của tôi sẽ vẫn khởi chạy Safari vì iOS đang sử dụng kết quả được lưu trong bộ nhớ cache từ phiên bản trước apple-app-site-associationcó tiền tố appId sai
zai chang

Kyle, tôi nghĩ tôi yêu bạn! Câu trả lời này tiết kiệm trong ngày, cảm ơn bạn!
neiker

Đây là nước sốt bí mật đối với tôi! Cảm ơn bạn, cảm ơn bạn, cảm ơn bạn!
nurider

10
  • Liên kết chung sẽ không hoạt động nếu bạn dán liên kết vào trường URL của trình duyệt.

  • Liên kết chung hoạt động với lần <a href="...">nhấp vào phần tử do người dùng điều khiển trên các miền . Ví dụ: nếu có một Liên kết chung trên google.com trỏ đến bnc.lt, nó sẽ mở ứng dụng.

  • Liên kết chung sẽ không hoạt động với <a href="...">nhấp chuột phần tử do người dùng điều khiển trên cùng một miền . Ví dụ: nếu có một Liên kết chung trên google.com trỏ đến một Liên kết chung khác trên google.com, nó sẽ không mở ứng dụng.

  • Liên kết chung không thể được kích hoạt qua Javascript (trong window.onload hoặc qua lệnh gọi .click () trên một <a>phần tử), trừ khi nó là một phần của hành động người dùng.

nguồn: https://dev.branch.io/getting-started/universal-app-links/support/ios/#appsbaries-that-support-universal-links

Viên đạn thứ 3 khiến tôi mất khoảng một ngày để tìm ra.


1
Viên đạn thứ 3, tương tự ở đây: lãng phí nhiều giờ để tìm ra điều đó. Apple thậm chí còn có một lời giải thích rất ngu ngốc cho nó: "iOS tôn trọng ý định có thể có của người dùng và mở liên kết trong Safari", hãy xem chính bạn tại đây .
jox

Gạch đầu dòng thứ 3!
Byteros

10

Đối với bất kỳ ai cần dễ dàng kiểm tra các Liên kết mở (Phổ biến), bạn cũng có thể mở liên kết trong Trình mô phỏng của mình từ thiết bị đầu cuối bằng lệnh sau:

xcrun simctl openurl booted yourapp_or_http://yourlink

ví dụ:

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


1
Tôi không có cách này để làm việc, nó luôn luôn mở Safari. Tuy nhiên, chúng hoạt động khi tôi chạy trên một thiết bị thực tế. Bất kỳ ý tưởng nào cũng sẽ được đánh giá cao vì việc gỡ lỗi / phát triển mà không có trình mô phỏng sẽ khó hơn một chút.
chib

7

Trong trường hợp mọi người ở đây đang tìm kiếm các giải pháp khác, chúng tôi đã tổng hợp lại toàn bộ từng bước để gỡ lỗi Liên kết chung vì chúng tôi đã thấy rất nhiều vấn đề xuất hiện, gây ra rất nhiều vấn đề.

Kiểm tra nó ra:

Hướng dẫn gỡ lỗi liên kết chung

Bản xem trước Hướng dẫn gỡ lỗi

Nếu bạn chỉ muốn thiết lập Universal Links mới, hướng dẫn này thực sự hữu ích:

Hướng dẫn thiết lập liên kết sâu iOS

Hy vọng chúng hữu ích!


Rất hữu ích, cảm ơn! Phù hợp với tôi khi chạy trên một thiết bị thực tế, nhưng không phù hợp với Trình mô phỏng iOS.
Josh Sklar

6

Tôi chỉ nghĩ rằng tôi sẽ thêm một số điều tôi đã khám phá ra trong trường hợp nhiều người gặp phải vấn đề tương tự như tôi trong tương lai. Chúng hầu hết liên quan đến lỗi xác thực.

Mặc dù apple không nói rõ điều đó, nhưng apple-app-site-association tệp phải được phân phát qua https, ngay cả khi đã ký. Chứng chỉ được sử dụng cho https cũng phải được apple tin cậy. Vì vậy, mặc dù chứng chỉ được thêm vào thiết bị trong Cài đặt -> Chung -> Hồ sơ sẽ cho phép https trong safari, nó sẽ không cho phép các liên kết chung hoạt động.

Trong nhật ký thiết bị, trên một lỗi xác thực giữa thiết bị và máy chủ, sẽ có một giá trị được in như "TrustResultValue" : 4. A TrustResultValuetrong số 5 có nghĩa là chứng chỉ dành cho miền không chính xác (Ví dụ: test.com được cung cấp từ www.test.com). ATrustResultValue trong 4 nghĩa là chứng chỉ không được tin cậy cho việc sử dụng này.

Có thể có một số bước hữu ích để gỡ lỗi ở đây . Phần "Kiểm tra quyền truy cập vào apple-app-site-Association" là hướng dẫn từng bước về cách đảm bảo thiết bị đang nhận apple-app-site-associationtệp. Các bước tổng hợp thành:

  1. Gỡ cài đặt ứng dụng. Điều này là cần thiết vì tệp được tải xuống khi cài đặt.

  2. Dừng máy chủ phân phối đúng cách apple-app-site-association .

  3. Trong xcode, mở Window -> Devices, sau đó chọn thiết bị của bạn.

  4. Mở nhật ký thiết bị bằng cách nhấp vào hình tam giác ở cuối cửa sổ.

  5. Xóa nhật ký bằng cách nhấp vào thùng rác để xóa mọi nhật ký trước đó có thể liên quan.

  6. Cài đặt lại ứng dụng bằng xcode bằng cách nhấp vào nút phát.

  7. Sau khi ứng dụng đã khởi chạy, nếu thiết bị đang yêu cầu tệp một cách chính xác thì nhật ký thiết bị sẽ có lỗi có thể được tìm thấy bằng cách tìm kiếm "apple-app-site-Association".

Nếu apple-app-site-associationtệp được cung cấp đúng cách (bỏ bước 2) thì sẽ không có lỗi. Thay vào đó, lỗi xác thực có thể được hiển thị nếu đó là sự cố.


1
Tôi đang thực hiện giả mạo SSL bằng Charles Proxy và điều này dẫn đến giá trị tin cậy là 4. Khi tôi tắt proxy, nó đã thành công.
Ben Flynn

6

Nguyên nhân phổ biến nhất là khi người dùng chạm vào trên cùng bên phải, do đó yêu cầu iOS KHÔNG mở ứng dụng (trong trường hợp này là Uber) trong tương lai.

Để khắc phục, hãy kéo xuống để hiển thị biểu ngữ thông minh và nhấn vào MỞ:

Kéo xuống trong Safari và MỞ lại

Thao tác này sau đó sẽ "ghi nhớ" để mở ứng dụng.


5

Chúng tôi đã thêm tệp liên kết apple-app-site-link vào vị trí này:

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

Trên iOS 9, nó hoạt động tốt, nhưng trên iOS 10, nó không hoạt động.

Có vẻ như vấn đề là với đường dẫn .well-known :

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

Do đường dẫn https://example.com/.well-known/apple-app-site-association được chuyển hướng đến 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

Theo ý kiến ​​của tôi nếu bằng cách nào đó, đường dẫn nổi tiếng không hoạt động chính xác, nó sẽ phá vỡ các liên kết phổ quát.


Hướng dẫn sử dụng ghi rõ rằng "Tệp cần có thể truy cập được qua HTTPS — mà không có bất kỳ chuyển hướng nào".
eonil

Sách hướng dẫn cũng nói rõ rằng "Đối với các ứng dụng chạy trên iOS 9.3.1 trở lên, kích thước không nén của tệp apple-app-site-Association không được lớn hơn 128 KB, bất kể tệp đó có được ký hay không." Tệp này là 154 KB.
Roberto ngày

Trên iOS11, máy chủ của bạn phải trả về trạng thái 404 một cách rõ ràng cho: example.com/.well-known/apple-app-site-association sau đó swcd sử dụng dự phòng cho root: example.com/apple-app-site-association . Bạn có thể nhanh chóng kiểm tra trạng thái HTTP trở lại với các công cụ như Postman
Max Odnovolyk

4

Tôi đã cố gắng làm cho nó hoạt động, nhưng nó mất khá nhiều thời gian và vật lộn. Lưu ý rằng trừ khi bạn ký vào apple-app-site-association tệp (ký là tùy chọn!) Việc nhấn vào một liên kết trong Safari sẽ không mở ứng dụng của bạn (điều này khiến tôi rất đau đầu).


1
Thật là tò mò. Apple tuyên bố trong tài liệu rằng đối với Liên kết chung thuần túy và việc sử dụng trong iOS9, bạn không cần phải ký. Chỉ khi bạn muốn hỗ trợ iOS 8 Handoff / Shared Web Credentials thì bạn mới cần phải ký. Hấp dẫn! Tôi có cùng một vấn đề, vì vậy tôi sẽ thử ký.
wrtsprt

Việc ký thực sự là tùy chọn. Nhấn vào một liên kết trong Mobile Safari để kích hoạt mở ứng dụng iOS gốc được gọi là "Web Browser – to – Native App Handoff", trong trường hợp đó, bạn sẽ cần thêm thuộc activitycontinuationtính vào apple-app-site-associationtệp json. developer.apple.com/library/ios/documentation/UserExperience/…
Devy

3

Tôi đã mất gần một ngày để tìm ra điều này. Vấn đề tôi gặp phải là không tải xuống các cấu hình cấp phép cập nhật trong XCode (tôi cũng đã khởi động lại XCode sau đó).

(Tùy chọn> Tài khoản> Xem chi tiết> Tải xuống tất cả)


3

Bạn có thể kiểm tra các liên kết phổ biến trong trình mô phỏng

Từ Hướng dẫn lập trình tìm kiếm ứng dụng: Hỗ trợ các liên kết chung


6
Có ai nhận được các liên kết phổ quát để làm việc trong một trình mô phỏng? Tôi đã thử vô số lần và nó không bao giờ hoạt động. Tuy nhiên, nó hoạt động bằng cách sử dụng một thiết bị thực với các luồng tương tự.
Tony

Tôi cũng không thể kiểm tra điều này. Cố gắng để Safari kích hoạt các liên kết phổ biến trong trình mô phỏng là vô ích, mặc dù thực tế là nó hoạt động bình thường trên một thiết bị vật lý.
Albert Bori

Tôi cũng không thể khiến chúng hoạt động trong trình mô phỏng. @AlbertBori bạn đã làm cho điều này hoạt động?
chib

Tôi gần như chắc chắn rằng chúng không hoạt động trong trình mô phỏng . Tôi quen với tất cả những cạm bẫy khác, và tôi không bao giờ có thể nhận được chúng để làm việc trong mô phỏng ..
Fattie

3

Sau hai ngày, tôi thấy rằng những loại liên kết này (từ chi nhánh)

liên kết ứng dụng: xxxx.app.link

chỉ hoạt động sau khi Lưu trữ (cũng như Ad-hoc) ứng dụng và cài đặt nó vào điện thoại.


3

Nếu bạn đang lưu trữ apple-app-site-associationtrên Firebase , hãy đảm bảo đặt nó trong /.well-known/thư mục con! Có vẻ như Xcode sẽ truy vấn URL đó trước, và nếu thành công, nó sẽ không cố gắng truy vấn URL đó apple-app-site-associationtrong thư mục gốc. Vì một số lý do, các kỹ sư firebase đã làm cho các trang web được lưu trữ tự động phản hồi /.well-known/apple-app-site-associationbằng một tệp liên kết trống (nhưng được định dạng chính xác) ghi đè tệp tùy chỉnh của bạn, khiến bạn không biết tại sao không có gì hoạt động!


2
Cuối cùng! Cảm ơn rất nhiều. Nó được viết ở đâu đó? Firebase nên ghi lại tài liệu ở đâu đó.
Berkay Turancı

2

Truy cập developer.apple.com và chỉnh sửa một trong các cấu hình phân phối của bạn. Trong trang chỉnh sửa, bạn có thể mở một cửa sổ bật lên cho ID ứng dụng sẽ hiển thị danh sách tên ứng dụng của bạn và trong () dấu ngoặc tròn phía sau tên ứng dụng, nó sẽ hiển thị tất cả ID ứng dụng thực của bạn . Một số ứng dụng có thể có ID nhóm của bạn làm tiền tố nhưng một số thì không . Đảm bảo sử dụng chính xác những gì bạn thấy trong menu bật lên bên trong () và đặt nó vào trường appID chi tiết liên kết ứng dụng táo. Tôi đã gặp chính xác vấn đề này với một ứng dụng và các liên kết chung của nó.


2

Vấn đề đối với tôi hóa ra là apple-app-site-associationtập tin. Theo tài liệu của Apple, chỉ cần tham số applinks. Tôi đã thêm activitycontinuationthông số và nó hoạt động.

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

3 năm sau và chúng tôi đã đạt được vấn đề chính xác này. Thêm activitycontinuationlà những gì đã sửa nó cho chúng tôi.
readyornot

2

Tôi đã không thực sự thấy cùng một kết hợp vấn đề / giải pháp chính xác mà nó làm việc cho tôi, vì vậy cũng có thể thêm của tôi trong trường hợp ai đó có cùng vấn đề!

Đối với ứng dụng của mình, tôi đang sử dụng lược đồ URL tùy chỉnh (đã thiết lập APP_TARGET > Info > URL Types) và đặt lược đồ URL từ đây vào bảng điều khiển Firebase để khớp nhưng vẫn không hoạt động.

Vấn đề của tôi thực sự là hai vấn đề:

Hãy để ý xem có chọn Tự động quản lý ký không

Nếu bạn đang kiểm tra cài đặt "Tự động quản lý ký" của Xcode giống như tôi, vì tôi chỉ đang cố gắng tạo một ứng dụng demo nhanh, bạn sẽ muốn đảm bảo rằng TeamID được sử dụng khớp với TeamID trong bảng điều khiển Firebase của bạn. Ban đầu, tôi đã truy cập Tài khoản nhà phát triển Apple của mình và sao chép ID nhóm từ trang Thành viên của mình, nhưng sau đó thấy rằng ID thực tế đang được Xcode sử dụng khác. (Bạn có thể tìm thấy điều này trong APP_TARGET > General > Signing > Signing Certificate.Đối với tôi nó trông giống như iPhone Developer: My Name (TEAM_ID)).

Đặt tiền tố TeamID của bạn thành Mã nhận dạng gói trong Các loại URL của bạn

Sau khi tôi đảm bảo những điều này khớp trong bảng điều khiển Firebase và Xcode, vấn đề tiếp theo của tôi là số nhận dạng cho lược đồ URL của tôi. Thông thường, sử dụng số nhận dạng gói của bạn ở đây, nhưng Firebase thực sự đặt tiền tố này bằng ID nhóm mà bạn đã cung cấp trong bảng điều khiển Firebase của mình, vì vậy tôi cũng phải thêm tiền tố đó vào số nhận dạng trong phần loại URL trong Xcode.

Sau hai bản sửa lỗi này và tải xuống lại GoogleService-Info.plisttệp, tôi không gặp vấn đề gì khi mở các liên kết động của mình.


2

Sau hai ngày tuyệt vọng, tôi nghĩ cuối cùng tôi đã sửa được. Đây là giải pháp của tôi:

Có vẻ như các ứng dụng cũ sử dụng tiền tố ứng dụng khác với các ứng dụng mới hơn. Các ứng dụng mới hơn chỉ sử dụng ID nhóm cho mục đích này. Nếu tiền tố ứng dụng và ID nhóm không giống nhau, có vẻ như bạn cần chỉ định trường tiếp tục hoạt động trong tệp liên kết trang web ứng dụng apple:

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

Một điều khác mà tôi đã trải qua trong chuyến đi địa ngục của mình là xóa ứng dụng và khởi động lại thiết bị dường như là cách duy nhất để buộc làm mới tệp này.


1

Đối với tôi, lỗi của tôi là trang web của chúng tôi đang chuyển hướng www.domain.com đến domain.com, vì vậy tất cả www.domain.com/* sẽ không thành công vì điều đó. Hy vọng rằng sẽ giúp.


1

Tôi đã có thể kiểm tra Liên kết chung trong Trình mô phỏng iOS bằng ứng dụng Lịch.

Tôi vừa tạo một sự kiện và thêm URL mà tôi muốn kiểm tra vào trường của sự kiện URL. Sau đó, khi xem sự kiện đã tạo, bạn có thể chỉ cần nhấn vào liên kết URL và ứng dụng của bạn sẽ mở ra.


Điều này dường như không hiệu quả với tôi, tôi đã thử mọi cách để khiến chúng hoạt động trong trình mô phỏng nhưng không có kết quả. Chúng hoạt động tốt trên thiết bị thực tế, nhưng điều đó không lý tưởng để phát triển / gỡ lỗi. Tôi đã cố nhấn lâu vào liên kết và không có tùy chọn "Mở trong ứng dụng".
chib

1

Sau một ngày cố gắng giải quyết vấn đề này, Khởi động lại điện thoại của tôi đã giải quyết được sự cố.

Gỡ cài đặt / Cài đặt lại ứng dụng cũng không hoạt động.


1

Đối với ios13, có một định dạng mới - hãy xem tại đây https://developer.apple.com/documentation/safariservices/supporting_associated_domains_in_your_app?language=objc

Tôi đã cập nhật tệp của mình để trông giống như sau:

{
  "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" ]
   }
}

bạn cần thêm "exclude": truevào componentsđối tượng để commenttrở thành sự thật
skornos

@skornos điểm tốt. tôi sẽ sửa đổi câu trả lời của tôi.
Anita

0

Đối với những độc giả tương lai tìm thấy trang này ...

Tôi đã ở trong hoàn cảnh tương tự. Tuy nhiên, trong tình huống của tôi, iOS10 đang hoạt động AOK và bất kể tôi đã làm gì (tăng số bản dựng, xóa / cài đặt lại, v.v.), iOS9 dường như từ chối hoạt động.

Tôi đã đến điều này từ iOS10 và cần hỗ trợ iOS9. Vào thời điểm đó, tài liệu ở đây - https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html - nói rõ rằng tệp có thể được đặt ở gốc của máy chủ web (ví dụ /apple-app-site-association) hoặc trong thư mục .well-known (ví dụ /.well-known/apple-app-site-association). Vì tôi cũng đang hỗ trợ Android, cũng sử dụng thư mục .well-known cho một tệp tương tự, tôi quyết định đặt cả hai vào đó.

Đối với các bản cài đặt mới trên iOS10, nó yêu cầu rõ ràng tệp gốc, không thành công, sau đó yêu cầu tệp .well-known và thành công.

Đối với iOS9, nó đã yêu cầu rõ ràng tệp gốc, không thành công và không làm gì khác.

Giải pháp: nếu bạn hỗ trợ iOS9, hãy đặt tệp tại /apple-app-site-association.


0

Trong trường hợp của tôi, lỗi của tôi là đặt các tham số truy vấn trong các đường dẫn:

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

khi tôi xóa '? target = verify & *' khỏi đường dẫn, nó bắt đầu hoạt động

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.