Kesalahan apa yang Anda dapatkan? Ini bukan pertanyaan tentang xcode .
JAL
Gagal "jika UIApplication.sharedApplication (). CanOpenURL (instagramURL!)" Yang memeriksa
Sk.Azad
Silakan lihat artikel di sini: awkwardhare.com/post/121196006730/... Di iOS 9 Anda harus menentukan skema url apa yang dicari aplikasi Anda (saya belum melakukan ini sendiri)
hukumnya
3
Tambahkan ini ke file info.plist Anda <key> LSApplicationQueriesSchemes </key> <array> <string> URLScma1 </string> <string> URLScma2 </string> <string> URLScma3 </string> </array>
Kamleshwar
Jawaban:
210
iOS 9 telah melakukan sedikit perubahan pada penanganan skema URL. Anda harus memasukkan daftar putih URL yang akan dipanggil aplikasi Anda untuk menggunakan LSApplicationQueriesSchemeskunci di Info.plist.
Jika Anda memanggil metode "canOpenURL" pada URL yang tidak ada dalam daftar putih Anda, itu akan mengembalikan "TIDAK", bahkan jika ada aplikasi yang diinstal yang telah terdaftar untuk menangani skema ini. "Aplikasi ini tidak diizinkan untuk meminta skema xxx" entri syslog akan muncul.
Jika Anda memanggil metode "openURL" pada URL yang tidak ada dalam daftar putih Anda, itu akan gagal secara diam-diam. "Aplikasi ini tidak diizinkan untuk meminta skema xxx" entri syslog akan muncul.
Penulis juga berspekulasi bahwa ini adalah bug dengan OS dan Apple akan memperbaikinya dalam rilis berikutnya.
Sebagai titik klarifikasi, JANGAN sertakan ": //" dalam string aplikasi tertentu untuk dimasukkan dalam daftar putih dalam array LSApplicationQueriesSchemes, yaitu "comgooglemaps: //". Jika Anda menyertakan ": //" canOpenUrl: akan mengembalikan NO dan memberikan "Aplikasi ini tidak diizinkan untuk meminta skema xxx" syslog / error. Namun, ketika Anda membuat panggilan canOpenUrl yang sebenarnya: Anda masih harus menyertakan titik dua yaitu canOpenUrl: @ "comgooglemaps:".
EmphaticArmPump
5
Apple, pada kenyataannya, memperbaikinya dalam pembaruan terbaru. -openURL:selalu bekerja meskipun -canOpenURL:terbatas.
Tim Johnsen
Apa gunanya ini? Di mana keamanannya jika saya bisa daftar semuanya di plist dan masih meminta untuk itu?
Maciej Swic
@MaciejSwic Salah satu alasannya adalah Anda tidak dapat mengubah daftar tanpa mengirim ulang ke Apple.
hukum
Perhatikan bahwa semua itu terkait dengan aplikasi yang dikompilasi hanya untuk iOS SDK 9. "Jika Anda tidak melakukan kompilasi ulang dengan iOS SDK 9.0, aplikasi Anda dibatasi hingga 50 skema yang berbeda (panggilan ke canOpenURL kemudian mengembalikan TIDAK)", seperti yang ditentukan pada developers.facebook.com/docs/ios/ios9
mkll
158
Seperti yang dikatakan di atas, Anda ingin menambahkan kunci di daftar info, berikut adalah daftar untuk sebagian besar jejaring sosial
tetapi jika saya ingin mengarahkan ulang ke halaman buku wajah seperti " facebook.com/....",Setelah menambahkan fb hanya itu wrkng
siva krishna
Hampir baik. Di Octobr 2015 saya mengalami beberapa kegagalan dengan URL aneh dari dialog berbagi Facebook. Saya menambahkannya sebagai jawaban, silakan menambahkannya ke Anda yang memang benar.
elbuild
1
dan Ha://add/[username]untuk menambahkan teman-teman snapchat dengan cepat 3
EssamSoft
87
Ini adalah fitur keamanan baru iOS 9. Tonton WWDC 2015 Sesi 703 untuk informasi lebih lanjut.
Aplikasi apa pun yang dibangun dengan SDK 9 harus menyediakan LSApplicationQueriesSchemesentri dalam file plistnya, mendeklarasikan skema mana yang coba di-query.
Untuk memperjelas. Akankah ini mengesampingkan aplikasi seperti itu yang memungkinkan pengguna memasukkan skema URL mereka sendiri + menjalankannya?
Jonny
@Jonny Tidak, karena Anda masih dapat mencoba membuka URL apa pun menggunakan openURL:. Dan itu akan memberi tahu Anda apakah pembukaan berhasil atau tidak.
Leo Natan
Ya, tetapi canOpenURL tidak dapat digunakan sehingga kami tidak dapat memberi tahu pengguna apakah itu akan berfungsi atau tidak, ia hanya harus mencoba sendiri.
Jonny
Saya ingin membuka peta google apa yang harus saya masukkan ke dalam urlscheme?
coding22
25
Dengan asumsi dua aplikasi TestA dan TestB. TestB ingin menanyakan apakah TestA diinstal. "TestA" mendefinisikan skema URL berikut dalam file info.plist-nya:
Tetapi ini biasanya akan mengembalikan TIDAK di iOS9 karena "TestA" perlu ditambahkan ke entri LSApplicationQueriesSchemes dalam file info.plist TestB. Ini dilakukan dengan menambahkan kode berikut ke file info.plist TestB:
tunggu, bukankah seharusnya nilai string kunci LSApplicationQueriesSchemes sebagai "testA" di into.plist aplikasi TestB?
Nik Yekimov
22
Dari, Sesi 703 WWDC 2015:
Anda dapat terus menggunakan skema URL ketika Anda membangun aplikasi untuk iOS 9 dan Anda ingin memanggil skema URL, Anda sekarang harus mendeklarasikannya di Info.plist aplikasi Anda. Ada kunci baru LSApplicationQueriesSchemes,, dan di sini Anda perlu menambahkan daftar skema yang Anda inginkan canOpenURL aktif.
Ya, bukan itu. Itu masih tidak akan berfungsi comgooglemaps, bahkan dengan info.plist
Radu
apakah Anda menemukan perbaikan untuk ini?
Salman Hasrat Khan
1
sebuah gambar bernilai 1000 kata. terima kasih atas tangkapan layarnya. itu yang saya butuhkan.
sean808080
3
Berbagi Facebook dari dialog berbagi gagal bahkan dengan jawaban @Matthieu (yang 100% benar untuk URL sosial lainnya). Saya harus menambahkan satu set URL yang saya balikkan dari Facebook SDK.
Penting untuk dicatat bahwa ada bug pada ponsel yang sudah di-jailbreak pada 9.0.x yang merusak skema url. Jika Anda menjalankan perangkat yang di-jailbreak maka pastikan Anda memperbarui Patcyh di Cydia
Anda dapat membuka aplikasi dengan menelepon openURL:atau openURL:options:completionHandler:(iOS 10 dan seterusnya) secara langsung tanpa melakukan pemeriksaan bersyarat canOpenURL:. Silakan baca bagian diskusi di Apple doc untuk canOpenURL: metode yang mengatakan:
metode openURL: tidak dibatasi oleh LSApplicationQueriesSchemespersyaratan.
Tampaknya tidak ada yang membahas cara menentukan URL dengan parameter yang disematkan. URL apa pun yang berisi parameter tidak mungkin menentukan URL spesifik di LSApplicationsQueriesSchemes. Misalnya, anggap saya memiliki aplikasi email yang melewati alamat email pengirim:
Hah? Yang harus Anda tambahkan di daftar adalah myemail. Parameter tidak berperan di sini.
Leo Natan
0
Apple mengubah metode canOpenURL di iOS 9. Aplikasi yang memeriksa Skema URL di iOS 9 dan iOS 10 harus mendeklarasikan Skema ini saat diajukan ke Apple.
Ketika saya mencoba menelepon Facebook dari aplikasi saya sendiri hari ini, saya menemukan bahwa tidak ada LSApplicationQueriesSchemeskunci yang dapat saya tambahkan ke Info.plist(Versi Xcode 8.2.1 (8C1002)). Saya membuka Info.plistdengan Sublime Text dan secara manual menambahkannya ke dalam file, lalu berhasil. Hanya untuk memberi tahu Anda bahwa jika Anda tidak dapat menemukan kunci, cukup tambahkan sendiri.
+canOpenURL:
kembali?Jawaban:
iOS 9 telah melakukan sedikit perubahan pada penanganan skema URL. Anda harus memasukkan daftar putih URL yang akan dipanggil aplikasi Anda untuk menggunakan
LSApplicationQueriesSchemes
kunci diInfo.plist
.Silakan lihat posting di sini: http://awkwardhare.com/post/121196006730/quick-take-on-ios-9-url-scheme-changes
Kesimpulan utama adalah bahwa:
Penulis juga berspekulasi bahwa ini adalah bug dengan OS dan Apple akan memperbaikinya dalam rilis berikutnya.
sumber
-openURL:
selalu bekerja meskipun-canOpenURL:
terbatas.Seperti yang dikatakan di atas, Anda ingin menambahkan kunci di daftar info, berikut adalah daftar untuk sebagian besar jejaring sosial
* 3 pertandingan pertama Facebook (FBSDK 4.6): fbapi, fbauth2, fbshareextension. "Ha" adalah untuk snapchat
sumber
Ha://add/[username]
untuk menambahkan teman-teman snapchat dengan cepat 3Ini adalah fitur keamanan baru iOS 9. Tonton WWDC 2015 Sesi 703 untuk informasi lebih lanjut.
Aplikasi apa pun yang dibangun dengan SDK 9 harus menyediakan
LSApplicationQueriesSchemes
entri dalam file plistnya, mendeklarasikan skema mana yang coba di-query.sumber
openURL:
. Dan itu akan memberi tahu Anda apakah pembukaan berhasil atau tidak.Dengan asumsi dua aplikasi TestA dan TestB. TestB ingin menanyakan apakah TestA diinstal. "TestA" mendefinisikan skema URL berikut dalam file info.plist-nya:
Aplikasi kedua "TestB" mencoba mencari tahu apakah "TestA" diinstal dengan menelepon:
Tetapi ini biasanya akan mengembalikan TIDAK di iOS9 karena "TestA" perlu ditambahkan ke entri LSApplicationQueriesSchemes dalam file info.plist TestB. Ini dilakukan dengan menambahkan kode berikut ke file info.plist TestB:
Implementasi yang berfungsi dapat ditemukan di sini: https://github.com/gatzsche/LSApplicationQueriesSchemes-Working-Example
sumber
Dari, Sesi 703 WWDC 2015:
sumber
Berbagi Facebook dari dialog berbagi gagal bahkan dengan jawaban @Matthieu (yang 100% benar untuk URL sosial lainnya). Saya harus menambahkan satu set URL yang saya balikkan dari Facebook SDK.
sumber
Di Swift 4.2 dan Xcode 10.1
Dalam info.plist perlu menambahkan CFBundleURLSchemes dan LSApplicationQueriesSchemes.
-> Pilih info.plist di proyek Anda,
-> klik kanan,
-> Pilih Open As Source Code
Lihat tangkapan layar di bawah ini
-> file xml akan dibuka
-> salin - rekatkan kode di bawah ini dan ganti dengan ID Anda
CFBundleURLSchemes dan LSApplicationQueriesSchemes untuk gmail, fb, twitter, dan tertaut di.
Lihat di bawah layar file info.plist terakhir Anda
sumber
Penting untuk dicatat bahwa ada bug pada ponsel yang sudah di-jailbreak pada 9.0.x yang merusak skema url. Jika Anda menjalankan perangkat yang di-jailbreak maka pastikan Anda memperbarui Patcyh di Cydia
sumber
Anda dapat membuka aplikasi dengan menelepon
openURL:
atauopenURL:options:completionHandler:
(iOS 10 dan seterusnya) secara langsung tanpa melakukan pemeriksaan bersyaratcanOpenURL:
. Silakan baca bagian diskusi di Apple doc untuk canOpenURL: metode yang mengatakan:sumber
Tampaknya tidak ada yang membahas cara menentukan URL dengan parameter yang disematkan. URL apa pun yang berisi parameter tidak mungkin menentukan URL spesifik di LSApplicationsQueriesSchemes. Misalnya, anggap saya memiliki aplikasi email yang melewati alamat email pengirim:
Satu-satunya cara tampaknya membuatnya berfungsi di iOS9 adalah menghapus parameter apa pun.
sumber
myemail
. Parameter tidak berperan di sini.Apple mengubah metode canOpenURL di iOS 9. Aplikasi yang memeriksa Skema URL di iOS 9 dan iOS 10 harus mendeklarasikan Skema ini saat diajukan ke Apple.
sumber
Untuk PayPal, tambahkan skema URL di bawah ini:
Lihat tautan ini
sumber
Swift 3.1, Swift 3.2, Swift 4
Tambahkan ini di Info.plist:
sumber
Ketika saya mencoba menelepon Facebook dari aplikasi saya sendiri hari ini, saya menemukan bahwa tidak ada
LSApplicationQueriesSchemes
kunci yang dapat saya tambahkan keInfo.plist
(Versi Xcode 8.2.1 (8C1002)). Saya membukaInfo.plist
dengan Sublime Text dan secara manual menambahkannya ke dalam file, lalu berhasil. Hanya untuk memberi tahu Anda bahwa jika Anda tidak dapat menemukan kunci, cukup tambahkan sendiri.sumber