নীচের ইউআরএলটি আইওএস 8.3 এবং নিম্নে খোলে, তবে এটি কার্যকর হয় না এবং আইওএস 9
let instagramURL = NSURL(string: "instagram://app")
ইউআরএল খুলবে না কেন?
নীচের ইউআরএলটি আইওএস 8.3 এবং নিম্নে খোলে, তবে এটি কার্যকর হয় না এবং আইওএস 9
let instagramURL = NSURL(string: "instagram://app")
ইউআরএল খুলবে না কেন?
উত্তর:
আইওএস 9 ইউআরএল স্কিম হ্যান্ডলিংয়ে একটি ছোট পরিবর্তন করেছে। আপনার অ্যাপ্লিকেশনটিকে আপনার LSApplicationQueriesSchemes
কীটি ব্যবহার করার জন্য কল করতে হবে সেই url গুলি অবশ্যই সাদা তালিকাভুক্ত করতে হবে Info.plist
।
দয়া করে এখানে পোস্ট দেখুন: http://awkwardhare.com/post/121196006730/quick-take-on-ios-9-url-scheme-changes
মূল উপসংহারটি হ'ল:
যদি আপনি কোনও হোয়াইটলিস্টে নেই এমন কোনও ইউআরএলকে "ক্যানঅপেন URL" পদ্ধতিটি কল করেন, তবে এই স্কিমটি পরিচালনা করতে নিবন্ধীকৃত একটি অ্যাপ্লিকেশন ইনস্টল থাকা সত্ত্বেও এটি "না" ফিরে আসবে। একটি "এই অ্যাপ্লিকেশনটিকে স্কিম এক্সএক্সএক্সএক্সএক্সএর জন্য জিজ্ঞাসা করার অনুমতি নেই" সিস্লোগ এন্ট্রি প্রদর্শিত হবে।
যদি আপনি এমন কোনও URL- এ "ওপেন URL" পদ্ধতিটি কল করেন যা আপনার শ্বেত তালিকাতে নেই তবে এটি নিঃশব্দে ব্যর্থ হবে। একটি "এই অ্যাপ্লিকেশনটিকে স্কিম এক্সএক্সএক্সএক্সএক্সএর জন্য জিজ্ঞাসা করার অনুমতি নেই" সিস্লোগ এন্ট্রি প্রদর্শিত হবে।
লেখক আরও অনুমান করেছেন যে এটি ওএসের সাথে একটি বাগ এবং অ্যাপল এটি পরবর্তী প্রকাশে এটি ঠিক করবে।
-openURL:
থাকলেও সর্বদা কাজ করে -canOpenURL:
।
উপরে যেমন বলা হয়েছে, আপনি তথ্য প্লিস্টে একটি কী যুক্ত করতে চান, বেশিরভাগ সামাজিক নেটওয়ার্কের জন্য এখানে তালিকা দেওয়া আছে
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fb</string>
<string>fbapi</string>
<string>fbauth2</string>
<string>fbshareextension</string>
<string>fb-messenger-api</string>
<string>twitter</string>
<string>viber</string>
<string>whatsapp</string>
<string>wechat</string>
<string>line</string>
<string>instagram</string>
<string> instagram-stories</string>
<string>kakaotalk</string>
<string>mqq</string>
<string>vk</string>
<string>comgooglemaps</string>
<string>googlephotos</string>
<string>ha</string>
<string>yammer</string>
</array>
* প্রথম 3 টি ম্যাচ ফেসবুক (FBSDK 4.6): fbapi, fbauth2, fbshareexistance। "হা" স্ন্যাপচ্যাটের জন্য
Ha://add/[username]
দ্রুতগতিতে বন্ধুদের স্ন্যাপচ্যাট যুক্ত করতে
এটি আইওএস 9 এর একটি নতুন সুরক্ষা বৈশিষ্ট্য more আরও তথ্যের জন্য ডাব্লুডাব্লুডিসি 2015 সেশন 703 দেখুন।
এসডিকে 9 দিয়ে নির্মিত যে কোনও অ্যাপ্লিকেশনটিকে LSApplicationQueriesSchemes
তার প্লিজ ফাইলটিতে একটি এন্ট্রি সরবরাহ করা দরকার, এটি ঘোষণা করে যে কোন স্কিমগুলি কোয়েরি করার চেষ্টা করে।
<key>LSApplicationQueriesSchemes</key>
<array>
<string>urlscheme</string>
<string>urlscheme2</string>
<string>urlscheme3</string>
<string>urlscheme4</string>
</array>
openURL:
। এবং এটি আপনাকে জানাবে যে ওপেনিং সফল হয়েছিল কিনা।
দুটি অ্যাপস টেস্টএ এবং টেস্টবি ধরে নিচ্ছি। টেস্টবি জিজ্ঞাসা করতে চায় টেস্টএ ইনস্টল করা আছে কি না। "টেস্টএ" তার তথ্য.পালিস্ট ফাইলে নিম্নলিখিত URL টি স্কিমটি সংজ্ঞায়িত করে:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>testA</string>
</array>
</dict>
</array>
"টেস্টবি" দ্বিতীয় অ্যাপটি কল করে "টেস্টএ" ইনস্টল করা আছে কি না তা জানার চেষ্টা করে:
[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"TestA://"]];
তবে এটি আইওএস 9 এ সাধারণত কোনও ফিরিয়ে দেবে না কারণ টেস্টবি'র তথ্য.পলিট ফাইলটিতে "টেস্টএ" কে এলএস অ্যাপ্লিকেশন কুইরিস স্কিমেস এন্ট্রিতে যুক্ত করা দরকার। এটি টেস্টবি'র তথ্য.পলিট ফাইলটিতে নিম্নলিখিত কোড যুক্ত করে করা হয়:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>TestA</string>
</array>
একটি কার্যকরী বাস্তবায়ন এখানে পাওয়া যাবে: https://github.com/gatzsche/LSApplicationQueriesSchemes- ওয়ার্কিং- উদাহরণ
থেকে, সেশন 703 ডাব্লুডাব্লুডিসি 2015:
আপনি যখন আইওএস 9 এর জন্য আপনার অ্যাপ্লিকেশনটি তৈরি করেন আপনি ইউআরএল স্কিমগুলি ব্যবহার করা চালিয়ে যেতে পারেন এবং আপনি ইউআরএল স্কিমগুলি কল করতে চান, এখন আপনাকে সেগুলি আপনার অ্যাপ্লিকেশন ইনফ.প্লাইস্টে ঘোষণা করতে হবে। একটি নতুন কী রয়েছে
LSApplicationQueriesSchemes
এবং এখানে আপনি যে স্ক্যানগুলি করতে চান তার তালিকা যোগ করতে হবে ওপেন URL এ।
একটি শেয়ার ডায়লগ থেকে ফেসবুক ভাগ করে নেওয়া এমনকি @ ম্যাথিউ উত্তর (যা অন্যান্য সামাজিক ইউআরএলগুলির জন্য 100% সঠিক) এর সাথে ব্যর্থ হয়। আমি ফেসবুক এসডিকে থেকে বিপরীত ইউআরএল একটি সেট যোগ করতে হয়েছিল।
<array>
<string>fbapi</string>
<string>fbauth2</string>
<string>fbshareextension</string>
<string>fb-messenger-api</string>
<string>twitter</string>
<string>whatsapp</string>
<string>wechat</string>
<string>line</string>
<string>instagram</string>
<string>kakaotalk</string>
<string>mqq</string>
<string>vk</string>
<string>comgooglemaps</string>
<string>fbapi20130214</string>
<string>fbapi20130410</string>
<string>fbapi20130702</string>
<string>fbapi20131010</string>
<string>fbapi20131219</string>
<string>fbapi20140410</string>
<string>fbapi20140116</string>
<string>fbapi20150313</string>
<string>fbapi20150629</string>
</array>
সুইফটে 4.2 এবং এক্সকোড 10.1
ইনফিট.লিস্টে CFBundleURLSchemes এবং LSApplicationQueriesSchemes যুক্ত করা দরকার।
-> আপনার প্রকল্পে info.plist নির্বাচন করুন,
-> রাইট ক্লিক করুন,
-> উত্স কোড হিসাবে ওপেন নির্বাচন করুন
নীচের স্ক্রিন শট দেখুন
-> এক্সএমএল ফাইলটি খোলা হবে
-> অনুলিপি - কোডের নিচে পেস্ট করুন এবং আপনার আইডির সাথে প্রতিস্থাপন করুন
জিএফএল, এফবি, টুইটার এবং লিঙ্কযুক্ত এর জন্য সিএফবান্ডেল URLSchemes এবং LSApplicationQeriesSchemes।
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>li5****5</string>
<string>com.googleusercontent.apps.8***************5f</string>
<string>fb8***********3</string>
<string>twitterkit-s***************w</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>8*********3</string>
<key>FacebookDisplayName</key>
<string>K************ app</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-share-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
<string>twitter</string>
<string>twitterauth</string>
<string>linkedin</string>
<string>linkedin-sdk2</string>
<string>linkedin-sdk</string>
</array>
আপনার চূড়ান্ত তথ্য.পলিট ফাইলটি স্ক্রিনের নীচে দেখুন
ভাল আপনি শর্তাধীন চেক না করে সরাসরি কল করে openURL:
বা openURL:options:completionHandler:
(আইওএস 10 এর পরে) একটি অ্যাপ্লিকেশন খুলতে পারেন canOpenURL:
। অনুগ্রহ করে পড়ুন আলোচনা অধ্যায় মধ্যে পদ্ধতি: জন্য canOpenURL অ্যাপল ডক যেখানে বলা আছে:
ওপেন URL: পদ্ধতিটি
LSApplicationQueriesSchemes
প্রয়োজনের দ্বারা সীমাবদ্ধ নয় ।
দেখে মনে হয় না যে এম্বেড থাকা প্যারামিটারগুলির সাথে URL গুলি কীভাবে নির্দিষ্ট করা যায় কেউই সম্বোধন করেছেন। যে কোনও ইউআরএলটিতে প্যারামিটার রয়েছে এটি LSApplicationsQueriesSchemes এ নির্দিষ্ট URL নির্দিষ্ট করা সম্ভব হবে না। উদাহরণস্বরূপ, ধরে নিন আমার কাছে একটি ইমেল অ্যাপ্লিকেশন রয়েছে যা প্রেরকদের ইমেল ঠিকানাটি পাস করে:
myemail://mailto?bob@gmail.com
এটি iOS9 এ কাজ করার একমাত্র উপায় যেকোন প্যারামিটারগুলি সরিয়ে ফেলা।
myemail
। প্যারামিটারগুলি এখানে কোনও ভূমিকা রাখে না।
সুইফট ৩.১, সুইফট ৩.২, সুইফট ৪
if let urlFromStr = URL(string: "instagram://app") {
if UIApplication.shared.canOpenURL(urlFromStr) {
if #available(iOS 10.0, *) {
UIApplication.shared.open(urlFromStr, options: [:], completionHandler: nil)
} else {
UIApplication.shared.openURL(urlFromStr)
}
}
}
এগুলি তথ্য.পিস্টে যুক্ত করুন:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>instagram</string>
</array>
আমি যখন আজ নিজের অ্যাপ থেকে ফেসবুককে কল করার চেষ্টা করেছি, তখন আমি জানতে পেরেছিলাম যে LSApplicationQueriesSchemes
আমি কী Info.plist
(এক্সকোড সংস্করণ 8.2.1 (8C1002)) যুক্ত করতে পারি এমন কোনও কী নেই । আমি সাবলাইম টেক্সটInfo.plist
সহ ওপেন করেছি এবং ম্যানুয়ালি এটিকে ফাইলটিতে যুক্ত করেছি, তারপরে এটি কার্যকর হয়েছিল। কেবল আপনাকে জানাতেই যদি আপনি কীটিটি না খুঁজে পান তবে কেবল নিজেই এটি যুক্ত করুন।
+canOpenURL:
ফিরে আসে?