Tautan Universal iOS tidak membuka dalam aplikasi

109

Jadi saya mengikuti tutorial ini dengan tepat dan menggunakan nilai yang sama dengan yang disediakan: https://blog.branch.io/how-to-setup-universal-links-to-deep-link-on-apple-ios-9

File Asosiasi Apple juga siap di direktori tautan:
WEB_PAGE:PORT_NUMBER/apple-app-site-association

Semuanya tampaknya diatur di sisi ini.

Saya telah menambahkan hak, memperbarui profil penyediaan, dan semuanya sudah disiapkan.

Saat saya menjalankan aplikasi di perangkat saya, dan membuka tautan http://WEB_PAGE:PORT_NUMBER, ini selalu membuka Safari.

Saya bahkan memiliki breakpoint dalam metode berikut:

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

Tapi nihil.

Adakah yang menyempurnakan ini? Apakah ada sesuatu yang saya lewatkan?

Legolas
sumber
2
checkout di sini untuk memastikan Anda tidak melewatkan langkah apa pun stackoverflow.com/questions/35609667/…
Vineet Choudhary

Jawaban:

189

Ada beberapa kemungkinan masalah.

  1. Coba tempel domain Anda ke validator link ini dan pastikan tidak ada masalah: https://limitless-sierra-4673.herokuapp.com/ (kredit untuk ShortStuffSushi - lihat repo )

  2. iOS mencatat pesan kesalahan di log sistem jika Anda tidak memiliki TLS yang disiapkan dengan benar di domain yang ditentukan dalam hak Anda. Itu terkubur di log OS, bukan log aplikasi. Pesan kesalahan akan terlihat seperti ini 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. Pesan kesalahan ditarik dari sini , petunjuk cepat (tidak lengkap) tentang penggunaan CloudFlare untuk TLS di sini .

  3. Dalam pengujian pribadi saya, mengklik / mengetik tautan di Safari tidak pernah membuka aplikasi secara langsung. Mengklik dari aplikasi lain (iMessage, Mail, Slack, dll.) Telah berfungsi. Yang lain melaporkan bahwa mengklik tautan di hasil pencarian Google telah membuka aplikasi secara langsung.

  4. Perhatikan bahwa jika Tautan Universal berhasil membuka aplikasi Anda dan kemudian Anda mengeklik ke Safari (dengan mengetuk situs Anda di sudut kanan atas bilah navigasi di aplikasi), iOS akan berhenti membuka aplikasi saat Anda mengunjungi URL tersebut . Kemudian di Safari, Anda dapat menarik ke bawah untuk menampilkan spanduk di bagian atas halaman dengan "Buka". Saya membuang banyak waktu untuk ini. Perhatikan bahwa mengklik ke situs => menonaktifkan UL tampaknya jalur tertentu , berdasarkan jalur yang Anda tentukan di file apple-app-site-assocation. Jadi jika Anda memiliki rute terpisah, yoursite.com/a/*dan yoursite.com/b/*, jika Anda mengeklik yoursite.com/a/*dan membuka aplikasi Anda secara langsung, Anda memiliki opsi di sudut kanan atas aplikasi untuk mengeklik yoursite.com/a/*. Jika Anda melakukan itu, kunjungan berikutnya keyoursite.com/a/*akan terbuka di browser, bukan aplikasi. Namun, yoursite.com/b/*seharusnya tidak terpengaruh dan tetap membuka aplikasi Anda secara langsung.

Beri tahu saya jika Anda mengetahui masalahnya. Saya pribadi sangat ingin tahu tentang cara kerja Tautan Universal dan kasus edge apa yang ada. Semoga berhasil.

st.derrick
sumber
1
Hal yang sama. Sangat aneh. Terkadang itu membuka aplikasi secara langsung, terkadang membuka webView. Saya berharap mereka membuat dokumentasinya jelas. Pengoperasian fitur ini tidak menentu
Legolas
4
Mengenai 1), Anda tidak lagi diharuskan menandatangani file asosiasi situs-aplikasi-apel jika Anda menyajikannya melalui https.
Jeremy Hicks
11
Memulai ulang Perangkat iOS Anda mungkin membantu juga. Saya tiga kali memeriksa semua pengaturan dan konfigurasi dan saya benar-benar yakin bahwa semuanya sudah benar tetapi masih tidak berfungsi. Kemudian saya mencoba dengan perangkat lain dan bekerja dengan sempurna. Saya kemudian menghapus aplikasi dari perangkat asli, memulai ulang perangkat dan menginstal ulang aplikasi, lalu berfungsi ...
mathz
4
Bagaimana cara kembali ke aplikasi alih-alih safari jika seseorang secara tidak sengaja menekan tautan situs web di sudut kanan aplikasi?
iEngineer
3
Saya tidak mendapatkan Open in App banner di mana pun. Setelah pencarian yang lama, berikut solusinya: Ketik link apa pun untuk situs Anda di aplikasi Notes (yang merupakan link universal). Sekarang Klik Selesai. Setelah itu menjadi tautan, klik lama padanya dan pilih "Buka di AppNAME-DI SINI"!
kishorer747
64

Ada banyak hal yang bisa menyebabkan kesalahan ini. Dua poin membuat saya kesulitan:

  • Di Xcode, saat Anda menambahkan hak Associated Domains, setiap entri harus dimulai dengan applinks:dan kemudian nama domain Anda. Mis applinks:www.apple.com.

  • Meskipun Xcode membuat file hak untuk saya, itu tidak termasuk dalam build saya: Saya harus mengklik kotak itu secara manual.

Dan ya, setelah melakukan itu, tidak perlu menandatangani apple-app-site-associationfile: ini hanya teks biasa, dan berfungsi, selama disajikan melalui HTTPS. (Anda masih harus menandatanganinya jika Anda mendukung iOS 8.)

DFedor
sumber
4
Saya juga harus menghapus aplikasi sepenuhnya dari perangkat uji, lalu membangun dan menjalankan lagi sebelum akhirnya berfungsi.
Phil Andrews
14
Anda menyelamatkan hari saya, ini adalah masalah saya, meskipun XCode membuat file hak untuk saya, itu tidak termasuk dalam build saya: Saya harus mengklik kotak itu secara manual.
cham
12
Menyertakan file hak dalam build juga memperbaiki masalah saya. Perlu dicatat bahwa di Xcode 8 kotak centang keanggotaan target di File Inspector sebenarnya dinonaktifkan. Saya harus pergi ke pengaturan build dan menambahkan file hak ke fase Sumber Daya Salin.
Charles A.
5
@ cham: bisakah kalian menjelaskan lebih lanjut "meskipun Xcode membuat file hak untuk saya, itu tidak termasuk dalam build saya: Saya harus mengklik kotak itu secara manual."
Thang Pham
6
@AwaisFayyaz Buka Build Phases> Salin Sumber Daya Bundel. Klik tanda plus lalu tambahkan file hak Anda.
s.zainulabideen
36

Tampaknya ada kesalahan dalam dokumentasi untuk membuat file asosiasi untuk Tautan Universal .

Dimana dikatakan:

Nilai kunci appID adalah ID tim aplikasi dan ID paket

seharusnya dikatakan

Nilai kunci appID adalah App's Prefix dan ID paket

Untuk sebagian besar aplikasi, tampaknya ID Tim dan awalan aplikasi sama, tetapi jika aplikasi Anda telah disimpan selama bertahun-tahun, nilai ini bisa berbeda.

Untuk menemukan nilai ini, buka Pusat Anggota di https://developer.apple.com dan lihat "Sertifikat, Pengidentifikasi & Profil", klik "Pengenal", lalu "ID Aplikasi" di tabel di bawah "Pengenal". Temukan aplikasi Anda, dan gunakan nilai Prefix dan Bundle ID di sana untuk membuat AppID Anda untuk file asosiasi.

Curtis Brian Halbrook
sumber
2
+1, Ini sangat membantu saya. Habiskan setengah hari untuk mencari tahu mengapa itu tidak berhasil dan ini tampaknya menjadi masalah bagi saya
Ivo Beckers
Anda menyelamatkan hari saya, karena aplikasi saya sudah lama sekali dan awalan aplikasi berbeda dari ID tim.
Ti3t
ini adalah satu-satunya hal yang berhasil untuk saya. Terima kasih!
dhin
Ini adalah solusi untuk saya. Saran yang bagus.
vincenth
33

Untuk membantu men-debug masalah ini, telusuri "swcd" di keluaran konsol perangkat Anda saat memasang aplikasi untuk melihat apakah pendaftaran tautan universal Anda berhasil atau gagal.

  1. Gunakan perangkat yang sebenarnya, bukan simulator.
  2. Hapus aplikasi dari perangkat Anda.
  3. Hubungkan perangkat ke komputer Anda, dan lihat output konsol perangkat di xcode. (jendela -> perangkat -> [perangkat Anda] -> konsol terbuka). Biarkan jendela ini tetap terbuka.
  4. Instal aplikasi Anda dan biarkan diluncurkan.
  5. Filter keluaran konsol ke "swcd". Jika berhasil, Anda akan melihat sesuatu seperti screenshot berikut. Jika gagal, Anda akan melihat sesuatu yang lain. Jika Anda tidak melihat apa pun, Anda mengacaukan sesuatu yang mendasar seperti menambahkan hak Associated Domains.

Applink berhasil ditambahkan

mpoisot.dll
sumber
2
Tip luar biasa! Saya menambahkan https: // ke applinks: hak dan juga menentukan jalur lengkap yang ingin saya dengarkan yang keduanya merupakan kesalahan. Saya menentukan example.com/path * di mana saya seharusnya hanya menentukan domain.com saya dan file AASA di example.com lalu menentukan jalur terhadap id bundel aplikasi saya
Numan Tariq
3
Dapatkah saya mentransfer bonus tunai kepada Anda ?? Saya menghabiskan 2 hari melalui setiap langkah pengaturan tautan universal yang aneh ini, tidak ada yang membantu sampai saya mencoba pendekatan Anda. Saya sangat tidak beruntung untuk menghosting file asosiasi saya di folder root firebase untuk domain saya, dan ternyata Apple menanyakan .well-known / subdirektori terlebih dahulu, dan firebase tampaknya menanggapinya dengan file asosiasi mereka sendiri (!) Yang benar yang tidak ada aplikasi yang ditautkan. Goshhh bagaimana saya bisa mengetahui hal ini, Apple?
nalexn
Ahhh petunjuk bagus! Saya tidak tahu tentang konsol perangkat ini, hanya melihat keluaran konsol Xcode. Masalah saya adalah bahwa 2 dari 3 domain tautan dalam DID berfungsi, tetapi bukan yang terakhir itu. Dan di sana di konsol saya melihat bahwa untuk domain terakhir saya, saya telah salah mengeja dengan "appllinks: <domain>" (2 L) Oh man… lagi pula, terima kasih sekali lagi untuk cara yang bagus untuk memeriksa apakah Universal Links benar-benar terdaftar! (Saya menemukan log konsol juga Menghapus tautan saat mencopot pemasangan aplikasi: +1)
Arno Teigseth
1
apakah seharusnya verbose itu secara default? Karena saya tidak mendapatkan log sedetail itu .. apakah ini berarti operasi tidak berhasil?
Nicholas Allio
26

Jawaban St.derrick bersifat informatif.

Tetapi untuk mengaktifkan kembali tautan universal untuk dibuka di aplikasi alih-alih safari, kita perlu melakukan hal berikut.

  • Tekan lama pada tautan Universal di Mail atau iMessage, lalu Anda akan melihat opsi untuk membuka di safari atau di Aplikasi.
Praveen
sumber
2
Tidak ada pilihan app, hanya salin, buka, tambahkan ke daftar bacaan, dll.
iEngineer
1
Hampir gila debugging masalah ini, tapi INI solusinya atau saya. Mungkin jika tidak diatur dengan benar dan aplikasi Mail membuka tautan di safari, tautan itu selalu terbuka di safari? tidak tahu, tetapi saya pernah menekan lama -> buka di 'myapp' ... dan sekarang tautannya terbuka dengan benar!
herbert
1
Terima kasih banyak untuk solusi ini. Saya terjebak dalam hal ini selama hampir sehari. Anda menyelamatkan hari saya.
Andrew
18

Saya menyadari bahwa masalah bagi saya adalah bahwa tautan ke direktori root a (mis. http://example.com/) Tidak membuka aplikasi saya tetapi jika saya menambahkan jalur (mis. http://example.com/mypath) Itu berfungsi. Menambahkan "/"ke daftar jalur meningkatkannya:

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

Seperti yang dijawab oleh slutsker di utas Forum Pengembang Apple ini .

tidbeck
sumber
17

Langkah cepat untuk memeriksa apakah Anda telah menerapkan Universal Link dengan benar.

  • Ketuk dan tahan tautan yang Anda harapkan untuk meluncurkan aplikasi. Anda akan melihat "Buka di [nama aplikasi Anda]" di Menu Konteks.

  • Buka aplikasi Catatan, ketikkan tautan yang Anda harapkan untuk membuka aplikasi. Tap Selesai. Tautan akan menguning dan mengetuk tautan akan membuka aplikasi Anda, dan bukan Safari.

  • Jika tautan http://yourDomain.com tidak meluncurkan aplikasi, coba http://yourDomain.com/yourFolder/

  • Di Safari, Jika Menu Konteks menampilkan "Buka di [nama aplikasi Anda]" di safari, tetapi mengetuk tautan akan membuka tautan di safari itu sendiri alih-alih meluncurkan aplikasi,

    Sebuah. Coba tarik ke bawah pada halaman safari yang terbuka saat link diklik seperti cara Anda 'menarik untuk menyegarkan'. Sebuah spanduk akan muncul yang dapat membuka aplikasi Anda. Ketuk spanduk untuk membuka aplikasi, tutup aplikasi dengan menekan tombol beranda, kembali ke safari dan coba luncurkan aplikasi dengan mengetuk tautan lagi. Kali ini, aplikasi harus diluncurkan karena mengetuk spanduk seharusnya menyimpan preferensi untuk membuka tautan dalam aplikasi.

    b. Jika aplikasi masih tidak dapat diluncurkan setelah langkah a., Coba kirim link ke webmail seperti gmail dan buka situs webmail di safari dan coba klik link tersebut. Jika berhasil, Anda mungkin mencoba meluncurkan aplikasi dari domain yang sama dengan tautan. Dari apa yang saya lihat, meluncurkan aplikasi dari domain yang sama kebanyakan gagal . Mungkin safari tidak akan peduli untuk memeriksa apakah url tujuan adalah tautan universal, ketika tautan berada di domain yang sama dengan tempat pengguna berada. Jadi coba luncurkan aplikasi dari domain lain.

Nikhil Mathew
sumber
3
Itu dia, telah berurusan dengan masalah ini selama berjam-jam, MELUNCURKAN APLIKASI DARI DOMAIN YANG SAMA PALING GAGAL. Terima kasih :)
maledr53
12

Sangat penting juga untuk meningkatkan versi proyek atau nomor build setelah mengintegrasikan tautan universal. Bahkan jika Anda menghapus / menginstal ulang, iOS tidak akan mengambil tautan kecuali Anda menabrak versinya.

Kyle Truscott
sumber
1
Ini! Versi bundel benar-benar yang menyebabkan pengujian saya gagal, karena saya akan melalui semua saran di atas dan tautan saya masih akan meluncurkan Safari karena iOS menggunakan hasil cache dari versi sebelumnya apple-app-site-associationyang memiliki awalan appId yang salah
zai chang
Kyle, kurasa aku mencintaimu! Jawaban ini menyelamatkan hari, terima kasih!
neiker
Ini adalah saus rahasia untukku! Terima kasih terima kasih terima kasih!
perawat
10
  • Tautan Universal tidak akan berfungsi jika Anda menempelkan tautan ke bidang URL browser.

  • Tautan Universal berfungsi dengan <a href="...">klik elemen yang didorong pengguna di seluruh domain . Contoh: jika ada Tautan Universal di google.com yang mengarah ke bnc.lt, aplikasi akan terbuka.

  • Tautan Universal tidak akan berfungsi dengan <a href="...">klik elemen yang didorong oleh pengguna di domain yang sama . Contoh: jika ada Tautan Universal di google.com yang mengarah ke Tautan Universal lain di google.com, aplikasi tidak akan dibuka.

  • Tautan Universal tidak dapat dipicu melalui Javascript (di window.onload atau melalui panggilan .click () pada sebuah <a>elemen), kecuali jika itu adalah bagian dari tindakan pengguna.

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

Peluru ketiga menghabiskan waktu sekitar satu hari untuk mencari tahu.

guido
sumber
1
Peluru ketiga, sama di sini: menghabiskan banyak waktu untuk memikirkannya. Apple bahkan memiliki penjelasan bagus yang sangat bodoh untuk itu: "iOS menghormati maksud pengguna yang paling mungkin dan membuka tautan di Safari" lihat diri Anda di sini .
jox
Peluru ke-3 TOP!
Byteros
10

Bagi siapa saja yang perlu dengan mudah menguji pembukaan Tautan (Universal), Anda juga dapat membuka tautan di Simulator Anda dari terminal dengan perintah ini:

xcrun simctl openurl booted yourapp_or_http://yourlink

sebagai contoh:

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

morksinaanab
sumber
1
Saya belum membuat ini berfungsi, itu selalu membuka Safari. Mereka bekerja ketika saya menjalankan perangkat yang sebenarnya. Ide apa pun akan dihargai karena proses debug / pengembangannya sedikit lebih menyakitkan tanpa simulator.
chib
7

Jika orang-orang di sini mencari solusi lain, kami mengumpulkan langkah demi langkah untuk men-debug Tautan Universal karena kami telah melihat banyak masalah muncul, menyebabkan BANYAK sakit kepala.

Saksikan berikut ini:

Panduan Debugging Tautan Universal

Pratinjau Panduan Debugging

Jika Anda hanya ingin menyiapkan Tautan Universal baru, panduan ini sangat membantu:

Panduan Penyiapan Tautan Dalam iOS

Semoga bermanfaat!

Chris Maddern
sumber
Sangat membantu, terima kasih! Berfungsi untuk saya saat menjalankan perangkat yang sebenarnya, tetapi tidak untuk Simulator iOS.
Josh Sklar
6

Hanya berpikir saya akan menambahkan beberapa hal yang saya temukan jika lebih banyak orang menghadapi masalah yang sama dengan saya di masa depan. Ini sebagian besar terkait dengan kesalahan otentikasi.

Meskipun apple tidak menyatakannya secara eksplisit, apple-app-site-associationfile tersebut harus disajikan melalui https, meskipun ditandatangani. Sertifikat yang digunakan untuk https juga harus dipercaya oleh apel. Jadi meskipun sertifikat ditambahkan ke perangkat di Pengaturan -> Umum -> Profil akan mengizinkan https di safari, itu tidak akan memungkinkan tautan universal berfungsi.

Di log perangkat, pada kesalahan otentikasi antara perangkat dan server, akan ada nilai yang dicetak seperti "TrustResultValue" : 4. A TrustResultValuedari 5 berarti sertifikat untuk domain yang salah (Mis. Test.com disajikan dari www.test.com). A TrustResultValuedari 4 berarti sertifikat tidak dipercaya untuk penggunaan ini.

Mungkin ada beberapa langkah berguna untuk debugging di sini . Bagian "Menguji akses ke apple-app-site-association" adalah panduan langkah demi langkah tentang cara memastikan perangkat mendapatkan apple-app-site-associationfile. Langkah-langkahnya adalah:

  1. Copot pemasangan aplikasi. Ini diperlukan karena file diunduh saat penginstalan.

  2. Hentikan server dari melayani dengan benar apple-app-site-association.

  3. Di xcode, buka Window -> Perangkat lalu pilih perangkat Anda.

  4. Buka log perangkat dengan mengklik segitiga di bagian bawah jendela.

  5. Hapus log dengan mengklik tempat sampah untuk menghapus log sebelumnya yang mungkin terkait.

  6. Instal ulang aplikasi dengan xcode dengan mengklik tombol putar.

  7. Setelah aplikasi diluncurkan, jika perangkat meminta file dengan benar, maka log perangkat harus berisi kesalahan yang dapat ditemukan dengan mencari "apple-app-site-association".

Jika apple-app-site-associationfile disajikan dengan benar (langkah 2 ditinggalkan) maka seharusnya tidak ada kesalahan. Kesalahan otentikasi malah dapat ditampilkan jika itu masalahnya.

Sam
sumber
1
Saya melakukan spoofing SSL menggunakan Charles Proxy dan ini menghasilkan nilai kepercayaan 4. Ketika saya mematikan proxy, itu berhasil.
Ben Flynn
6

Penyebab paling umum adalah ketika pengguna mengetuk di kanan atas, sehingga memberi tahu iOS untuk TIDAK membuka aplikasi (dalam hal ini Uber) di masa mendatang.

Untuk memperbaiki, tarik ke bawah untuk menampilkan spanduk pintar dan ketuk BUKA:

Tarik ke bawah di Safari, dan BUKA lagi

Ini kemudian akan "mengingat" untuk membuka aplikasi.

samwize
sumber
5

Kami telah menambahkan file asosiasi-situs-aplikasi-apel ke lokasi ini:

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

Di iOS 9 itu berfungsi dengan baik, tetapi di iOS 10 itu tidak berhasil.

Tampaknya masalahnya ada pada jalur. Well-known :

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

Karena jalur https://example.com/.well-known/apple-app-site-association dialihkan ke 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

Menurut pendapat saya, jika entah bagaimana jalur yang terkenal tidak berfungsi dengan benar, itu akan merusak tautan universal.

Andrey Banshchikov
sumber
Manual tersebut dengan jelas mengatakan bahwa "File harus dapat diakses melalui HTTPS — tanpa pengalihan apa pun".
eonil
Manual juga dengan jelas mengatakan bahwa "Untuk aplikasi yang berjalan di iOS 9.3.1 dan yang lebih baru, ukuran file yang tidak dikompresi dari apple-app-site-association tidak boleh lebih dari 128 KB, terlepas dari apakah file tersebut ditandatangani." File ini berukuran 154 KB.
Roberto
Pada iOS11, server Anda harus secara eksplisit mengembalikan status 404 untuk: example.com/.well-known/apple-app-site-association, lalu swcd menggunakan fallback ke root: example.com/apple-app-site-association . Anda dapat dengan cepat memeriksa status HTTP yang dikembalikan dengan alat seperti Postman
Max Odnovolyk
4

Saya telah berhasil membuatnya berhasil, tetapi butuh waktu dan perjuangan yang cukup lama. Perhatikan bahwa kecuali Anda menandatangani apple-app-site-association file (penandatanganan bersifat opsional!) Mengetuk tautan di Safari tidak akan membuka aplikasi Anda (ini membuat saya sangat pusing).

Attila Bardos
sumber
1
Itu aneh. Apple menyatakan dalam dokumen bahwa untuk Tautan Universal murni dan penggunaan di iOS9 Anda tidak perlu masuk. Anda hanya perlu masuk jika Anda ingin mendukung Handoff / Shared Web Credentials iOS 8. Menarik! Saya memiliki masalah yang sama, jadi saya akan mencoba menandatangani.
wrtsprt
Penandatanganan memang opsional. Mengetuk link di Safari Seluler untuk memicu pembukaan aplikasi iOS asli disebut "Web Browser – to – Native App Handoff", dalam hal ini, Anda perlu menambahkan activitycontinuationproperti ke apple-app-site-associationfile json. developer.apple.com/library/ios/documentation/UserExperience/…
Devy
3

Butuh waktu hampir satu hari untuk mencari tahu ini. Masalah yang saya alami tidak mengunduh profil penyediaan yang diperbarui di XCode (Saya juga memulai ulang XCode setelah ini).

(Preferensi> Akun> Lihat Detail> Unduh Semua)

ken
sumber
3

Anda dapat menguji tautan universal di simulator

Dari Panduan Pemrograman Pencarian Aplikasi: Mendukung Tautan Universal

holmesal.dll
sumber
6
Adakah yang mendapatkan tautan universal untuk bekerja di simulator? Saya sudah mencoba berkali-kali dan tidak pernah berhasil. Itu berfungsi menggunakan perangkat nyata dengan aliran yang sama.
Tony
Saya juga belum bisa menguji ini. Mencoba membuat Safari memicu tautan universal di simulator sia-sia, meskipun faktanya itu berfungsi dengan baik pada perangkat fisik.
Albert Bori
Saya juga tidak bisa membuat mereka bekerja di simulator. @AlbertBori apakah ini berhasil?
chib
Saya hampir yakin mereka tidak bekerja di simulator . Saya akrab dengan semua jebakan lain, dan saya tidak pernah bisa membuatnya bekerja di simulator ..
Fattie
3

Setelah dua hari ternyata bagi saya, tautan semacam ini (dari cabang)

applinks: xxxx.app.link

berfungsi hanya setelah Pengarsipan (juga Ad-hoc) aplikasi dan menginstalnya ke telepon.

Bence Pattogato
sumber
3

Jika Anda menghosting apple-app-site-associationdi Firebase , pastikan untuk meletakkannya di /.well-known/subdirektori! Tampaknya Xcode menanyakan URL itu terlebih dahulu, dan jika berhasil, tidak akan mencoba untuk menanyakan apple-app-site-associationdi direktori root. Untuk beberapa alasan, insinyur firebase membuat situs web yang dihosting merespons secara otomatis /.well-known/apple-app-site-associationdengan file pengaitan kosong (tetapi terbentuk dengan benar) yang menggantikan yang khusus, sehingga Anda tidak tahu mengapa tidak ada yang berhasil!

nalexn
sumber
2
Akhirnya! Terima kasih banyak. Apakah itu tertulis di suatu tempat? Firebase harus mendokumentasikan di suatu tempat.
Berkay Turancı
2

Buka developer.apple.com dan edit salah satu profil distribusi Anda. Di halaman pengeditan, Anda dapat membuka munculan untuk ID Aplikasi yang akan menampilkan daftar nama aplikasi Anda dan dalam tanda kurung bulat () di belakang nama aplikasi, semua ID Aplikasi asli Anda akan terlihat . Beberapa aplikasi mungkin memiliki ID tim Anda sebagai awalan tetapi beberapa tidak . Pastikan untuk menggunakan apa yang Anda lihat di menu pop-up di dalam () dan masukkan ke dalam bidang appID detail asosiasi situs-app-apple. Saya memiliki masalah ini dengan aplikasi dan tautan universal.

MacMark
sumber
2

Masalahnya bagi saya ternyata apple-app-site-associationfile. Menurut dokumentasi Apple, hanya parameter applink yang diperlukan. Saya menambahkan activitycontinuationparameter dan berhasil.

{
  "activitycontinuation": {
    "apps": [
      "9JA89QQLNQ.com.apple.wwdc"
    ]
  },
  "applinks": {
    "apps": [],
    "details": [{
        "appID": "9JA89QQLNQ.com.apple.wwdc",
        "paths": [ "/wwdc/news/", "/videos/wwdc/2015/*" ]
      }]
  }
}
Chris
sumber
3 tahun kemudian dan kami menemukan masalah ini. Menambahkan activitycontinuationadalah apa yang memperbaikinya bagi kita.
readyornot
2

Belum benar-benar melihat kombo masalah / solusi yang sama persis yang membuatnya berfungsi untuk saya, jadi sebaiknya tambahkan milik saya jika seseorang memiliki masalah yang sama!

Untuk aplikasi saya, saya menggunakan skema URL khusus (ditetapkan APP_TARGET > Info > URL Types) dan menetapkan skema URL dari sini ke dalam Firebase console agar cocok tetapi masih tidak berfungsi.

Masalah saya sebenarnya ada dua masalah:

Hati-hati jika memeriksa Kelola Penandatanganan Secara Otomatis

Jika Anda memeriksa setelan "Kelola penandatanganan secara otomatis" di Xcode seperti saya sebelumnya, karena saya baru saja mencoba membuat aplikasi demo cepat, Anda harus memastikan bahwa TeamID yang digunakan cocok dengan yang ada di konsol Firebase Anda. Saya awalnya membuka Akun Pengembang Apple saya dan menyalin ID tim dari halaman Keanggotaan saya, tetapi kemudian melihat bahwa ID sebenarnya yang digunakan oleh Xcode berbeda. (Anda dapat menemukan ini di APP_TARGET > General > Signing > Signing Certificate.Bagiku sepertinya iPhone Developer: My Name (TEAM_ID)).

Awali TeamID Anda ke Bundle Identifier Anda di Jenis URL Anda

Setelah saya memastikan ini cocok di konsol Firebase dan Xcode saya, masalah saya berikutnya adalah pengenal untuk skema URL saya. Biasanya menggunakan pengenal bundel Anda di sini, tetapi Firebase sebenarnya mengawali ini dengan ID Tim yang Anda berikan di konsol Firebase, jadi saya harus mengawalnya ke pengenal di bagian jenis URL di Xcode juga.

Setelah dua perbaikan ini dan mengunduh ulang GoogleService-Info.plistfile, saya tidak punya masalah untuk membuka tautan dinamis saya.

Kyle H.
sumber
2

Setelah dua hari putus asa total, saya pikir saya akhirnya memperbaikinya. Inilah solusi saya:

Tampaknya aplikasi lama menggunakan awalan aplikasi yang berbeda dari aplikasi yang lebih baru. Aplikasi yang lebih baru hanya menggunakan ID Tim untuk tujuan ini. Jika awalan aplikasi dan ID tim tidak identik, tampaknya Anda perlu menentukan bidang kelanjutan aktivitas di file asosiasi situs app apple:

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

Hal lain yang saya alami selama perjalanan saya adalah menghapus aplikasi dan memulai ulang perangkat tampaknya menjadi satu-satunya cara untuk memaksa menyegarkan file ini.

Sebastian Boldt
sumber
1

Bagi saya, kesalahan saya adalah situs kita mengalihkan www.domain.com ke domain.com, jadi semua www.domain.com/* akan gagal karena itu. Semoga membantu.

wzhang84.dll
sumber
1

Saya dapat menguji Tautan Universal di Simulator iOS dengan menggunakan aplikasi Kalender.

Saya baru saja membuat acara dan menambahkan URL yang ingin saya uji di bidang acara tersebut URL. Kemudian, saat melihat acara yang dibuat, Anda cukup mengetuk tautan URL dan aplikasi Anda akan terbuka.

Tiago Alves
sumber
Ini sepertinya tidak berhasil untuk saya, saya telah mencoba segalanya untuk membuat mereka bekerja di simulator tetapi tidak berhasil. Mereka berfungsi dengan baik di perangkat sebenarnya, tetapi itu tidak ideal untuk pengembangan / debug. Saya sudah mencoba lama menekan tautan dan tidak ada opsi "Buka dalam aplikasi".
chib
1

Setelah menghabiskan satu hari mencoba membuat ini berfungsi, Memulai ulang ponsel saya menyelesaikan masalah.

Mencopot / Menginstal ulang aplikasi juga tidak berhasil.

tanner burton
sumber
1

Untuk ios13, ada format baru - lihat di sini https://developer.apple.com/documentation/safariservices/supporting_associated_domains_in_your_app?language=objc

Saya memperbarui file saya agar terlihat seperti ini:

{
  "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" ]
   }
}
Anita
sumber
Anda akan perlu untuk menambahkan "exclude": trueke componentsobjek untuk commentbenar
skornos
@orneo poin yang bagus. saya akan mengubah jawaban saya.
Anita
0

Untuk pembaca mendatang yang menemukan halaman ini ...

Saya memiliki situasi yang sama. Namun, dalam situasi saya, iOS10 berfungsi sebagai AOK, dan apa pun yang saya lakukan (ubah nomor build, hapus / instal ulang, dll.), IOS9 sepertinya menolak untuk berfungsi.

Saya datang ke ini dari iOS10, dan perlu mendukung iOS9. Saat ini, dokumentasi di sini - https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html - dengan jelas menyatakan bahwa file dapat ditempatkan di root server web (mis. /apple-app-site-association) atau dalam folder .well-known (mis/.well-known/apple-app-site-association ). Karena saya juga mendukung Android, yang juga menggunakan folder. Well-known untuk file serupa, saya memutuskan untuk meletakkan keduanya di sana.

Untuk penginstalan baru di iOS10, ia dengan jelas meminta file root, gagal, lalu meminta file .well-known, dan berhasil.

Untuk iOS9, itu dengan jelas meminta file root, gagal, dan tidak melakukan apa pun.

Solusi: Jika Anda mendukung iOS9, letakkan file di /apple-app-site-association.

greymouser
sumber
0

Dalam kasus saya, kesalahan saya adalah menempatkan parameter kueri di jalur:

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

ketika saya menghapus '? target = confirm & *' dari jalur, itu mulai berfungsi

Vins
sumber