2011-01-06 8 views
14

पर स्थापित ऐप्स की सूची ढूँढना क्या मेरे आईओएस डिवाइस पर स्थापित सभी ऐप्स का प्रोग्रामेटिक रूप से पता लगाना संभव है? क्या कोई एपीआई इसी के लिए उपलब्ध है?आईफोन

मदद

उत्तर

13

नहीं है, आईओएस अनुप्रयोगों पर के लिए धन्यवाद सैंडबॉक्स वातावरण के कारण अन्य अनुप्रयोगों के बारे में/की जानकारी के लिए पहुँच नहीं है।

+0

मुझे एक कामकाजी समाधान मिला, यकीन नहीं है कि यह सेब द्वारा स्वीकार किया जाएगा !!! विचार ??? – Unicorn

+0

मुझे लगता है कि यह नहीं होगा) –

+0

यहां लिंक है: http://www.iphonedevsdk.com/forum/iphone-sdk-development/22289-possible-retrieve-these-information.html – Unicorn

2

डिवाइस से नहीं। हालांकि, डेस्कटॉप से ​​आप आईट्यून्स लाइब्रेरी में देख सकते हैं।

+0

क्या आप इसे प्रोग्रामिक रूप से करने के बारे में बात कर रहे हैं? यदि हां, तो क्या आप अधिक जानकारी दे सकते हैं? – AmineG

1

जेलब्रोकन डिवाइस के बिना ऐसा करने के तरीके हैं और आपके ऐप को खारिज नहीं किया गया है।
1. वर्तमान में चल रही प्रक्रियाओं की एक सूची प्राप्त करें this SO उत्तर देखें। आपको प्रक्रिया नाम से ऐप नाम में अनुवाद करने की आवश्यकता होगी।
2. यह देखने के लिए जांचें कि क्या किसी भी ऐप्स ने UIApplicationDelegate canOpenURL के साथ एक अद्वितीय URL योजना पंजीकृत की है। ज्ञात यूआरएल योजनाओं को सूचीबद्ध करने वाली कुछ साइटें हैं, this सबसे अच्छा है।

यदि कोई ऐप वर्तमान में नहीं चल रहा है और कस्टम यूआरएल योजना पंजीकृत नहीं करता है तो इन तरीकों से यह पता नहीं लगाया जाएगा। मुझे ऐसी विधि सुनने में रूचि है जिसे ऐप स्टोर में अनुमति दी जाएगी जो इससे बेहतर काम करती है।

4

हाँ, यह सब स्थापित एप्लिकेशन

-(void) allInstalledApp 
{  
    NSDictionary *cacheDict; 

    NSDictionary *user; 

    static NSString *const cacheFileName = @"com.apple.mobile.installation.plist"; 

    NSString *relativeCachePath = [[@"Library" stringByAppendingPathComponent: @"Caches"] stringByAppendingPathComponent: cacheFileName]; 

    NSString *path = [[NSHomeDirectory() stringByAppendingPathComponent: @"../.."] stringByAppendingPathComponent: relativeCachePath]; 

    cacheDict = [NSDictionary dictionaryWithContentsOfFile: path]; 

    user = [cacheDict objectForKey: @"User"]; 

    NSDictionary *systemApp=[cacheDict objectForKey:@"System"]; 
} 

systemAppDictionary की सूची प्राप्त करने के लिए संभव है सभी सिस्टम से संबंधित एप्लिकेशन की सूची और userDictionary अन्य एप्लिकेशन में जानकारी शामिल हैं।

+0

क्या यह डेवलपर ऐप्स की सूची भी देता है? – yunas

+3

यह मेरे लिए काम नहीं करता है। रिटर्न शून्य – AmineG

+0

यह मेरे लिए भी काम नहीं करता है।प्रतिक्रिया मिल रही है। कृपया – jaydev

0

आप की जाँच के लिए एक आवेदन या canOpenURL विधि का उपयोग कर या पृष्ठभूमि प्रक्रियाओं की जाँच और ऐप्स में आप में रुचि रखते हैं के नाम के साथ मेल द्वारा स्थापित नहीं है कि क्या द्वारा यह कर सकते हैं।

1

इस कोशिश, यह यहां तक ​​कि गैर jailbroken उपकरणों के साथ काम:

#include <objc/runtime.h> 
Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace"); 
SEL selector=NSSelectorFromString(@"defaultWorkspace"); 

NSObject* workspace = [LSApplicationWorkspace_class performSelector:selector]; 

SEL selectorALL = NSSelectorFromString(@"allApplications"); 

NSLog(@"apps: %@", [workspace performSelector:selectorALL]);//will give you all **Bundle IDS** of user's all installed apps 
+0

इस से ऐप नाम और बंडल आईडी कैसे पार्स करें? कृपया मेरी मदद करें –

+0

@VikashRajput मेरा उत्तर 100% परीक्षण किया गया है। आपको उपरोक्त कोड की अंतिम पंक्ति में सभी ऐप्स (यानी बंडल आईडी) मिलेंगे, लेकिन आप सैंडबॉक्सिंग के कारण कुछ भी ओवरराइट नहीं कर सकते हैं। हालांकि, आप इसके लिए Google कर सकते हैं। यदि यह आपके लिए सहायक था तो एक अपवित्र होना चाहिए :)। –

+0

यह LSApplicationProxy प्रकार ऑब्जेक्ट्स की एक सरणी देगा, लेकिन मैं एनएसएसटींग के रूप में बंडल आईडी प्राप्त करने में सक्षम नहीं हूं। क्या आप कृपया बंडल आईडी को एनएसएसटींग के रूप में पार्स कर सकते हैं? –

0

आप क्रम उद्देश्य सी का उपयोग कर सकते सभी इंस्टॉल किए गए एप्लिकेशन की सूची प्राप्त करने। यह आपको LSApplicationProxy ऑब्जेक्ट्स की सरणी देगा।

एक कोड स्निपेट है जो आपके डिवाइस में स्थापित सभी एप्लिकेशन का नाम प्रिंट करता है।

Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace"); 
NSObject* workspace = [LSApplicationWorkspace_class performSelector:NSSelectorFromString(@"defaultWorkspace")]; 
NSMutableArray *array = [workspace performSelector:NSSelectorFromString(@"allApplications")]; 

NSMutableArray *mutableArray = [[NSMutableArray alloc] init]; 
for (id lsApplicationProxy in array) { 
    if(nil != [lsApplicationProxy performSelector:NSSelectorFromString(@"itemName")]){ 
     [mutableArray addObject:[lsApplicationProxy performSelector:NSSelectorFromString(@"itemName")]]; 
    } 
} 
NSLog(@"********* Applications List ************* : \n %@",mutableArray); 

<objc/runtime.h> शामिल करना न भूलें।