एक ऐप लॉन्च करने के लिए openUrl:
करने से पहले एक ऐप लॉन्च करना चाहिए (जैसे एक ऐप जो x-callback-url विनिर्देश के अनुसार कार्य करता है), मैं अन्य एप्लिकेशन को कॉल करने से पहले प्रोग्राममैटिक रूप से कैसे जांच सकता हूं कि मेरा एप्लिकेशन कॉलबैक काम कर रहा है?क्या मेरा ऐप यूआरएल योजना का जवाब देगा?
7
A
उत्तर
12
यह मेरे वर्तमान समाधान है:
- (BOOL) respondsToUrl:url
{
BOOL schemeIsInPlist = NO; // find out if the sceme is in the plist file.
NSBundle* mainBundle = [NSBundle mainBundle];
NSArray* cfBundleURLTypes = [mainBundle objectForInfoDictionaryKey:@"CFBundleURLTypes"];
if ([cfBundleURLTypes isKindOfClass:[NSArray class]] && [cfBundleURLTypes lastObject]) {
NSDictionary* cfBundleURLTypes0 = [cfBundleURLTypes objectAtIndex:0];
if ([cfBundleURLTypes0 isKindOfClass:[NSDictionary class]]) {
NSArray* cfBundleURLSchemes = [cfBundleURLTypes0 objectForKey:@"CFBundleURLSchemes"];
if ([cfBundleURLSchemes isKindOfClass:[NSArray class]]) {
for (NSString* scheme in cfBundleURLSchemes) {
if ([scheme isKindOfClass:[NSString class]] && [url hasPrefix:scheme]) {
schemeIsInPlist = YES;
break;
}
}
}
}
}
BOOL canOpenUrl = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString: url]];
return schemeIsInPlist && canOpenUrl;
}
सीमा यह है कि हम जाँच कर रहे हैं कि इस एप्लिकेशन योजना के लिए पंजीकृत है और कुछ अनुप्रयोग है कि यूआरएल का जवाब है।
AFAIK यह गारंटी नहीं देता है कि आपका आवेदन उस योजना के लिए वास्तविक उत्तरदाता है (जिस स्थिति में एक और ऐप भी उस योजना के लिए पंजीकृत है)।
मैंने जो कोशिश की, ऐसा लगता है कि आईओएस प्रत्येक अद्वितीय यूआरएल योजना के लिए पहला स्थापित ऐप खोलता है।
0
यहाँ कैसे मैं इसे स्विफ्ट में हल है:
var plistPath = NSBundle.mainBundle().pathForResource("Info", ofType: "plist")
var urlStuff = NSMutableDictionary(contentsOfFile: plistPath!)
var urlType = NSDictionary(objectsAndKeys: "com.appprefix.AppName", "CFBundleURLName", NSArray(object: "fb123456789"), "CFBundleURLSchemes")
urlStuff?.setObject(NSArray(object: urlType), forKey: "CFBundleURLTypes")
urlStuff?.writeToFile(plistPath!, atomically: true)
0
एक अधिक आसान समाधान:
+ (BOOL)isBundleURL:(NSURL *)url
{
NSArray *urlTypes = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleURLTypes"];
NSArray *urlSchemes = [urlTypes.firstObject objectForKey:@"CFBundleURLSchemes"];
return [urlSchemes containsObject:url.scheme];
}
+ (BOOL)respondsToURL:(NSURL *)url
{
return [self isBundleURL:url] && [[UIApplication sharedApplication] canOpenURL:url];
}
संबंधित मुद्दे
- 1. यूआरएल योजना यूआरएल योजना
- 2. कस्टम यूआरएल योजना खोलने के अनुरोध का जवाब देने के लिए ऐप कैसे पंजीकृत करें?
- 3. ऐप के लिए यूआरएल योजना जो स्थापित नहीं है
- 4. आईओएस 6.0 मैप्स ऐप के लिए यूआरएल योजना क्या है?
- 5. मेरा सर्वलेट यूटीएफ -8 में जेएसओएन अनुरोधों का जवाब क्यों नहीं देगा?
- 6. क्या आईओएस कैलेंडर एक यूआरएल योजना का समर्थन करता है?
- 7. यूआरएल योजना: मेल से खुले ऐप या ऐपस्टोर
- 8. आईओएस यूआरएल योजना की लंबाई
- 9. मेरा UIImageView नल का जवाब क्यों नहीं देता है?
- 10. आईओएस - क्रोम से यूआरएल योजना के साथ एक ऐप खोलें
- 11. मेरा फ्लैश ऐप अपना यूआरएल कैसे निर्धारित कर सकता है?
- 12. मेरा ऐप डोमेन
- 13. मेरा यूआरएल मैपिंग केस असंवेदनशील कैसे बनाएं?
- 14. ब्राउज़र यूआरएल योजना से लॉन्च एप्लिकेशन
- 15. मेरा Grails ऐप सर्वर
- 16. मेरा ऐप Google Play
- 17. मेरा ऐप आइपॉड
- 18. नेटवर्क-पथ संदर्भ यूआरआई/योजना सापेक्ष यूआरएल
- 19. आईओएस 6 कस्टम यूआरएल योजना लॉन्च छवियां गलत
- 20. इसका डब्ल्यूपीएफ जवाब क्या है?
- 21. कर्ल फ़ाइल यूआरएल योजना का उपयोग क्यों करता है, लेकिन
- 22. कैसे दावा करें कि एक वर्ग RSpec के साथ एक क्लास विधि का जवाब देगा?
- 23. मैं अपनी कस्टम यूआरएल योजना खोलने वाले ऐप को कैसे लॉन्च कर सकता हूं?
- 24. प्रति यूआरएल grails/वसंत प्रमाणीकरण योजना को कैसे कॉन्फ़िगर करें?
- 25. परिवर्तन लक्ष्य का जवाब
- 26. क्या कोल्डफ्यूजन का एएसपी.नेट के मास्टर पेज का जवाब है?
- 27. आईफोन पर कस्टम यूआरएल योजना की जांच कैसे करें?
- 28. डिवाइस लॉक होने पर ईवेंट का जवाब
- 29. एक से अधिक ऐप में कस्टम यूआरएल एप्लिकेशन के लिए एक ही यूआरएल पहचानकर्ता है?
- 30. मेरा ऐप अक्सर android.view.WindowLeaked अपवाद फेंकता है -
आह, अब मैं थोड़ा बेहतर समझते हैं। यूआरएल खोलने से पहले कुछ जानने का कोई तरीका नहीं है जब आप उस यूआरएल को खोलेंगे तो क्या होगा। पूछताछ के लिए आईओएस पर कोई लॉन्च सर्विसेज इंटरफ़ेस नहीं है। –
मैंने अपना जवाब स्वीकार करने का फैसला किया क्योंकि ऐसा लगता है कि यह उपलब्ध सर्वोत्तम तरीका है (हालांकि यह 100% विश्वसनीय नहीं है)। –