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?
ios
objective-c
xcode
ios9
ios-universal-links
Legolas
sumber
sumber
Jawaban:
Ada beberapa kemungkinan masalah.
Coba tempel domain Anda ke validator link ini dan pastikan tidak ada masalah: https://limitless-sierra-4673.herokuapp.com/ (kredit untuk ShortStuffSushi - lihat repo )
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 .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.
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/*
danyoursite.com/b/*
, jika Anda mengeklikyoursite.com/a/*
dan membuka aplikasi Anda secara langsung, Anda memiliki opsi di sudut kanan atas aplikasi untuk mengeklikyoursite.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.
sumber
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. Misapplinks: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-association
file: ini hanya teks biasa, dan berfungsi, selama disajikan melalui HTTPS. (Anda masih harus menandatanganinya jika Anda mendukung iOS 8.)sumber
Tampaknya ada kesalahan dalam dokumentasi untuk membuat file asosiasi untuk Tautan Universal .
Dimana dikatakan:
seharusnya dikatakan
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.
sumber
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.
sumber
Jawaban St.derrick bersifat informatif.
Tetapi untuk mengaktifkan kembali tautan universal untuk dibuka di aplikasi alih-alih safari, kita perlu melakukan hal berikut.
sumber
app
, hanya salin, buka, tambahkan ke daftar bacaan, dll.Untuk memvalidasi
apple-app-site-association
di sisi server, Anda dapat menggunakan validator resmi Apple.https://search.developer.apple.com/appsearch-validation-tool/
sumber
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:Seperti yang dijawab oleh slutsker di utas Forum Pengembang Apple ini .
sumber
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.
sumber
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.
sumber
apple-app-site-association
yang memiliki awalan appId yang salahTautan 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.
sumber
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
sumber
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
Jika Anda hanya ingin menyiapkan Tautan Universal baru, panduan ini sangat membantu:
Panduan Penyiapan Tautan Dalam iOS
Semoga bermanfaat!
sumber
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-association
file 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
. ATrustResultValue
dari 5 berarti sertifikat untuk domain yang salah (Mis. Test.com disajikan dari www.test.com). ATrustResultValue
dari 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-association
file. Langkah-langkahnya adalah:Copot pemasangan aplikasi. Ini diperlukan karena file diunduh saat penginstalan.
Hentikan server dari melayani dengan benar
apple-app-site-association
.Di xcode, buka Window -> Perangkat lalu pilih perangkat Anda.
Buka log perangkat dengan mengklik segitiga di bagian bawah jendela.
Hapus log dengan mengklik tempat sampah untuk menghapus log sebelumnya yang mungkin terkait.
Instal ulang aplikasi dengan xcode dengan mengklik tombol putar.
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-association
file disajikan dengan benar (langkah 2 ditinggalkan) maka seharusnya tidak ada kesalahan. Kesalahan otentikasi malah dapat ditampilkan jika itu masalahnya.sumber
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:
Ini kemudian akan "mengingat" untuk membuka aplikasi.
sumber
Kami telah menambahkan file asosiasi-situs-aplikasi-apel ke lokasi ini:
Di iOS 9 itu berfungsi dengan baik, tetapi di iOS 10 itu tidak berhasil.
Tampaknya masalahnya ada pada jalur. Well-known :
Karena jalur https://example.com/.well-known/apple-app-site-association dialihkan ke https://example.com
Menurut pendapat saya, jika entah bagaimana jalur yang terkenal tidak berfungsi dengan benar, itu akan merusak tautan universal.
sumber
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).sumber
activitycontinuation
properti keapple-app-site-association
file json. developer.apple.com/library/ios/documentation/UserExperience/…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).
sumber
Dari Panduan Pemrograman Pencarian Aplikasi: Mendukung Tautan Universal
sumber
Setelah dua hari ternyata bagi saya, tautan semacam ini (dari cabang)
berfungsi hanya setelah Pengarsipan (juga Ad-hoc) aplikasi dan menginstalnya ke telepon.
sumber
Jika Anda menghosting
apple-app-site-association
di Firebase , pastikan untuk meletakkannya di/.well-known/
subdirektori! Tampaknya Xcode menanyakan URL itu terlebih dahulu, dan jika berhasil, tidak akan mencoba untuk menanyakanapple-app-site-association
di direktori root. Untuk beberapa alasan, insinyur firebase membuat situs web yang dihosting merespons secara otomatis/.well-known/apple-app-site-association
dengan file pengaitan kosong (tetapi terbentuk dengan benar) yang menggantikan yang khusus, sehingga Anda tidak tahu mengapa tidak ada yang berhasil!sumber
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.
sumber
Masalahnya bagi saya ternyata
apple-app-site-association
file. Menurut dokumentasi Apple, hanya parameter applink yang diperlukan. Saya menambahkanactivitycontinuation
parameter dan berhasil.sumber
activitycontinuation
adalah apa yang memperbaikinya bagi kita.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 sepertinyaiPhone 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.plist
file, saya tidak punya masalah untuk membuka tautan dinamis saya.sumber
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:
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.
sumber
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.
sumber
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.sumber
Setelah menghabiskan satu hari mencoba membuat ini berfungsi, Memulai ulang ponsel saya menyelesaikan masalah.
Mencopot / Menginstal ulang aplikasi juga tidak berhasil.
sumber
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:
sumber
"exclude": true
kecomponents
objek untukcomment
benarUntuk 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
.sumber
Dalam kasus saya, kesalahan saya adalah menempatkan parameter kueri di jalur:
ketika saya menghapus '? target = confirm & *' dari jalur, itu mulai berfungsi
sumber