• ios 获取手机上app列表

    2019-06-10 17:24:41
    - (void)getAppList { id space = [NSClassFromString(@"LSApplicationWorkspace") performSelector:@selector(defaultWorkspace)]; NSArray *plugins = [space performSelector:@selector(installedPlugin...
    - (void)getAppList
    {
        id space = [NSClassFromString(@"LSApplicationWorkspace") performSelector:@selector(defaultWorkspace)];
        NSArray *plugins = [space performSelector:@selector(installedPlugins)];
        NSMutableSet *list = [[NSMutableSet alloc] init];
        for (id plugin in plugins) {
            id bundle = [plugin performSelector:@selector(containingBundle)];
            if (bundle)
                [list addObject:bundle];
        }
        int a = 1;
        for (id plugin in list) {
            NSLog(@"? %d--",a);
            a++;
            NSLog(@"bundleIdentifier =%@", [plugin performSelector:@selector(bundleIdentifier)]);//bundleID
            
            NSLog(@"applicationDSID =%@", [plugin performSelector:@selector(applicationDSID)]);
            NSLog(@"applicationIdentifier =%@", [plugin performSelector:@selector(applicationIdentifier)]);
            NSLog(@"applicationType =%@", [plugin performSelector:@selector(applicationType)]);
            NSLog(@"dynamicDiskUsage =%@", [plugin performSelector:@selector(dynamicDiskUsage)]);
            
            NSLog(@"itemID =%@", [plugin performSelector:@selector(itemID)]);
            NSLog(@"itemName =%@", [plugin performSelector:@selector(itemName)]);
            NSLog(@"minimumSystemVersion =%@", [plugin performSelector:@selector(minimumSystemVersion)]);
            
            NSLog(@"requiredDeviceCapabilities =%@", [plugin performSelector:@selector(requiredDeviceCapabilities)]);
            NSLog(@"sdkVersion =%@", [plugin performSelector:@selector(sdkVersion)]);
            NSLog(@"shortVersionString =%@", [plugin performSelector:@selector(shortVersionString)]);
            
            NSLog(@"sourceAppIdentifier =%@", [plugin performSelector:@selector(sourceAppIdentifier)]);
            NSLog(@"staticDiskUsage =%@", [plugin performSelector:@selector(staticDiskUsage)]);
            NSLog(@"teamID =%@", [plugin performSelector:@selector(teamID)]);
            NSLog(@"vendorName =%@", [plugin performSelector:@selector(vendorName)]);
        }
        return;
    
    }

     

    展开全文
  • iOS获取app已安装列表和安装app  2013-01-22 17:15:13| 分类: iOS |字号 订阅 MobileInstallation.framework iOS越狱后,使用 Mobile Installation 安装 IPA(使用iTunes/AppStore一样的安装API...

    iOS获取app已安装列表和安装app  

    2013-01-22 17:15:13|  分类: iOS |字号 订阅

    MobileInstallation.framework
    iOS越狱后,使用 Mobile Installation 安装 IPA(使用iTunes/AppStore一样的安装API)

    使用 Mobile Installation 安装 IPA
    http://www.yonsm.net/post/553

    获取ios安装的软件
    http://www.iloss.me/2011/11/03/%E8%8E%B7%E5%8F%96ios%E5%AE%89%E8%A3%85%E7%9A%84%E8%BD%AF%E4%BB%B6/

    http://www.iloss.me/2012/03/27/%E5%8E%9F%E5%88%9B%E5%88%86%E6%9E%90-ios%E7%B3%BB%E7%BB%9F%E4%B8%AD%E4%B8%AD%E5%B7%B2%E5%AE%89%E8%A3%85%E7%A8%8B%E5%BA%8Fmobileinstallation%E6%96%B9%E5%BC%8F/

    http://stackoverflow.com/questions/3878197/is-it-possible-to-get-information-about-all-apps-installed-on-iphone
    展开全文
  • 由于iOS app不允许检查更新,凡是app在上架审核时出现“检查更新”字样的都有可能被打回,而检查更新功能是产品经理最念念不忘的重要功能(内心一万个草泥马。。。),作为攻城狮的我们自然要想方设法实现这一功能。...

    由于iOS app不允许检查更新,凡是app在上架审核时出现“检查更新”字样的都有可能被打回,而检查更新功能是产品经理最念念不忘的重要功能(内心一万个草泥马。。。),作为攻城狮的我们自然要想方设法实现这一功能。

    既然ios在审核时不允许检查更新,那我们何不抓住审核漏洞,也即在审核时不出现检查更新而在实际使用时出现呢。答案就是获取当前app在App Store上的版本信息,并将此版本号与提交审核的app作对比,由于App Store上的版本号必然低于每次提交审核(新版本)的版本号,那么app在审核过程中不可能出现“检查更新”字样,此时用户在使用比App Store上的版本低的app时则相应会提示有新版本更新,并让用户选择跳转App Store进行更新。那么废话不多说,上代码:

    -

     (void)requestLookup {
        [YTHttpTool POST:YTSystemToolAppStoreLookupURL params:@{@"id": kAppStoreId} success:^(NSURLSessionDataTask *task, id responseObject) {
            NSArray *resultArr = responseObject[@"results"];
            NSDictionary *resultDic = resultArr.firstObject;
            NSString *appCurrentVersion = [YTSystemTool getAppVersion];
            NSString *appStoreVersion = resultDic[@"version"];
            if ([appCurrentVersion compare:appStoreVersion options:NSNumericSearch] == NSOrderedAscending) {
                UINavigationController *rootNC = (UINavigationController *)self.window.rootViewController;
                UIViewController *rootVC = rootNC.viewControllers.firstObject;
                [YTAlertTool alertTwoActionWithVC:rootVC title:[NSString stringWithFormat:@"您有新版本更新(%@)", appStoreVersion] message:@"" cancelTitle:@"我再看看" cancelHandler:nil defaultTitle:@"现在更新" defaultHandler:^(UIAlertAction * _Nonnull action) {
                    [YTSystemTool jumpToAppStoreApp];
                } completion:nil];
            }
        } fail:nil];
    }

    该段代码是写在APPDelegate.m文件中用于检查更新的私有方法,YTHttpTool类是我封装的网络请求类,YTAlertTool是我封装的提示框类,YTSystemTool是我封装的各种系统工具类,此处使用的跳转App Store的工具方法,但是重点在于YTSystemToolAppStoreLookupURL和kAppStoreId这两个常量。YTSystemToolAppStoreLookupURL是请求查询app在App Store的上架信息,固定为@”https://itunes.apple.com/lookup“,官方文档说明。需要注意的是旧版本的请求网址是@”http://itunes.apple.com/lookup“,自从苹果在iOS 10后使用了https协议,网址便改成了https,以前那些类似的博客均为http;kAppStoreId为app上架App Store时分配每个app的id,例如我的上架app是@”1197227551”,获取方法见下图:

    这里写图片描述
    触摸板右键选择“拷贝链接”得到当前app在App Store上的完整网址,如我的是:https://itunes.apple.com/us/app/众驾租车/id1197227551?mt=8,截取其中的id即可。至此,调用查询请求的完整URL(POST请求)为https://itunes.apple.com/lookup?id=1197227551,请求url后台打印结果如下:

    url:https://itunes.apple.com/lookup params:{
    id = 1197227551;
    } response:{
    resultCount = 1;
    results = (
    {
    advisories = (
    );
    appletvScreenshotUrls = (
    );
    artistId = 1197227550;
    artistName = “\U6b66\U6c49\U55bb\U5929\U79d1\U6280\U6709\U9650\U516c\U53f8”;
    artistViewUrl = “https://itunes.apple.com/us/developer/%E6%AD%A6%E6%B1%89%E5%96%BB%E5%A4%A9%E7%A7%91%E6%8A%80%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8/id1197227550?uo=4“;
    artworkUrl100 = “http://is1.mzstatic.com/image/thumb/Purple111/v4/d8/93/9f/d8939fc1-c834-b461-aafb-d87de4b549b6/source/100x100bb.jpg“;
    artworkUrl512 = “http://is1.mzstatic.com/image/thumb/Purple111/v4/d8/93/9f/d8939fc1-c834-b461-aafb-d87de4b549b6/source/512x512bb.jpg“;
    artworkUrl60 = “http://is1.mzstatic.com/image/thumb/Purple111/v4/d8/93/9f/d8939fc1-c834-b461-aafb-d87de4b549b6/source/60x60bb.jpg“;
    bundleId = “com.YTTimeRent.027hb”;
    contentAdvisoryRating = “4+”;
    currency = USD;
    currentVersionReleaseDate = “2017-03-03T02:55:24Z”;
    description = “\U4f17\U9a7e\U79df\U8f66\U4e13\U6ce8\U4e8e\U65b0\U80fd\U6e90\U6c7d\U8f66\U7684\U5206\U65f6\U79df\U8d41\Uff0c\U81f4\U529b\U4e8e\U901a\U8fc7\U7535\U52a8\U6c7d\U8f66\U5171\U4eab\U6765\U89e3\U51b3\U57ce\U5e02\U51fa\U884c\U96be\U9898\Uff0c\U4ee5\U79fb\U52a8\U4e92\U8054\U7f51\U4e3a\U57fa\U7840\Uff0c\U7ed3\U5408\U5404\U9879\U804c\U80fd\U6280\U672f\Uff0c\U6765\U5b9e\U73b0\U7528\U6237\U5feb\U901f\U627e\U8f66\Uff0cAPP\U5f00\U95e8\U5173\U95e8\Uff0c\U8fd8\U8f66\U7684\U5168\U7a0b\U81ea\U52a8\U5316\U3002\U6309\U7167\U65f6\U95f4\U7684\U8ba1\U8d39\U65b9\U5f0f\Uff0c\U4e3a\U7528\U6237\U63d0\U4f9b\U7eff\U8272\U3001\U7ecf\U6d4e\U3001\U4fbf\U6377\U7684\U51fa\U884c\U89e3\U51b3\U65b9\U6848\U3002”;
    features = (
    );
    fileSizeBytes = 46412800;
    formattedPrice = Free;
    genreIds = (
    6003
    );
    genres = (
    Travel
    );
    ipadScreenshotUrls = (
    );
    isGameCenterEnabled = 0;
    isVppDeviceBasedLicensingEnabled = 1;
    kind = software;
    languageCodesISO2A = (
    ZH
    );
    minimumOsVersion = “8.0”;
    price = 0;
    primaryGenreId = 6003;
    primaryGenreName = Travel;
    releaseDate = “2017-02-03T17:20:52Z”;
    releaseNotes = “(\U4fee\U6539)\U4fee\U6539\U7528\U6237\U534f\U8bae\U5185\U5bb9\n(\U4f18\U5316)\U4f18\U5316\U8d26\U5355\U754c\U9762\U4ee3\U7801\n(\U4fee\U590d)\U4fee\U590d\U4f18\U60e0\U5238\U4e0d\U53ef\U7528\U95ee\U9898\n(\U4f18\U5316)\U4f18\U5316\U641c\U7d22\U6846\n(\U589e\U52a0)\U5730\U56fe\U754c\U9762\U8fdb\U5165\U540e\U53f0\U65b0\U589e\U524d\U53f0\U81ea\U52a8\U5237\U65b0\U529f\U80fd”;
    screenshotUrls = (
    http://a2.mzstatic.com/us/r30/Purple122/v4/87/32/4f/87324f3a-d512-9c42-db11-3535b42d71c2/screen696x696.jpeg“,
    http://a4.mzstatic.com/us/r30/Purple111/v4/9d/6e/93/9d6e93a5-651d-b6dc-078f-29f4f1d3e307/screen696x696.jpeg“,
    http://a3.mzstatic.com/us/r30/Purple122/v4/2e/da/6c/2eda6c1e-c87e-f907-a414-1a7e31ec969e/screen696x696.jpeg“,
    http://a2.mzstatic.com/us/r30/Purple122/v4/12/0e/af/120eaf86-a637-b9d8-5299-46087bbeabe2/screen696x696.jpeg
    );
    sellerName = “YOU-TURN TECHNOLOGY CO.,LTD”;
    sellerUrl = “http://www.027hb.cn/“;
    supportedDevices = (
    “iPad2Wifi-iPad2Wifi”,
    “iPad23G-iPad23G”,
    “iPhone4S-iPhone4S”,
    “iPadThirdGen-iPadThirdGen”,
    “iPadThirdGen4G-iPadThirdGen4G”,
    “iPhone5-iPhone5”,
    “iPodTouchFifthGen-iPodTouchFifthGen”,
    “iPadFourthGen-iPadFourthGen”,
    “iPadFourthGen4G-iPadFourthGen4G”,
    “iPadMini-iPadMini”,
    “iPadMini4G-iPadMini4G”,
    “iPhone5c-iPhone5c”,
    “iPhone5s-iPhone5s”,
    “iPadAir-iPadAir”,
    “iPadAirCellular-iPadAirCellular”,
    “iPadMiniRetina-iPadMiniRetina”,
    “iPadMiniRetinaCellular-iPadMiniRetinaCellular”,
    “iPhone6-iPhone6”,
    “iPhone6Plus-iPhone6Plus”,
    “iPadAir2-iPadAir2”,
    “iPadAir2Cellular-iPadAir2Cellular”,
    “iPadMini3-iPadMini3”,
    “iPadMini3Cellular-iPadMini3Cellular”,
    “iPodTouchSixthGen-iPodTouchSixthGen”,
    “iPhone6s-iPhone6s”,
    “iPhone6sPlus-iPhone6sPlus”,
    “iPadMini4-iPadMini4”,
    “iPadMini4Cellular-iPadMini4Cellular”,
    “iPadPro-iPadPro”,
    “iPadProCellular-iPadProCellular”,
    “iPadPro97-iPadPro97”,
    “iPadPro97Cellular-iPadPro97Cellular”,
    “iPhoneSE-iPhoneSE”,
    “iPhone7-iPhone7”,
    “iPhone7Plus-iPhone7Plus”
    );
    trackCensoredName = “\U4f17\U9a7e\U79df\U8f66”;
    trackContentRating = “4+”;
    trackId = 1197227551;
    trackName = “\U4f17\U9a7e\U79df\U8f66”;
    trackViewUrl = “https://itunes.apple.com/us/app/%E4%BC%97%E9%A9%BE%E7%A7%9F%E8%BD%A6/id1197227551?mt=8&uo=4“;
    version = “1.0.9”;
    wrapperType = software;
    }
    );
    }

    截取其中字段”version“即获取当前在App Store的版本号。

    下面介绍获取当前app提交审核的版本号,在YTSystemTool.m文件中的代码如下:

    + (NSString *)getAppVersion {
        NSDictionary *infoDic = [[NSBundle mainBundle]infoDictionary];
        NSString *appCurVersion = [infoDic objectForKey:kAppCurrentVersion];
        return appCurVersion;
    }

    其中kAppCurrentVersion表示info.plist文件中版本号的字段名,为固定常量@”CFBundleShortVersionString”

    获取后将两个版本号进行比较,比较过程调用了系统NSString的API:- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask,该方法可以比较任意版本号的大小,方法返回比较结果枚举NSComparisonResult。

    比较完成后弹出版本更新提示框,如下图:
    这里写图片描述
    接下来介绍更新跳转的代码实现:同样是在YTSystemTool.m文件中,代码如下:

    + (void)jumpToAppStoreApp {
        NSString *appStoreURLStr = kAppStoreURLString;
        NSURL *appStoreURL = [NSURL URLWithString:appStoreURLStr];
        if ([[UIApplication sharedApplication]canOpenURL:appStoreURL]) {
            if ([UIDevice currentDevice].systemVersion.doubleValue >= 10.0) {
                [[UIApplication sharedApplication] openURL:appStoreURL options:@{UIApplicationOpenURLOptionsAnnotationKey: @"YES"} completionHandler:nil];
            } else {
                [[UIApplication sharedApplication] openURL:appStoreURL];
            }
        }
    }

    其中kAppStoreURLString表示App Store应用间通信的URL字符串常量,这里为@”itms-apps://itunes.apple.com/us/app/zhong-jia-zu-che/id1197227551?mt=8”,打开iTunes应用,搜索当前app获取方法如下图:
    这里写图片描述
    点击上图中的尖尖号,并在弹出的视图中选择Copy Link,如图:
    这里写图片描述
    我获取到的URL为 https://itunes.apple.com/us/app/%E4%BC%97%E9%A9%BE%E7%A7%9F%E8%BD%A6/id1197227551?mt=8,此时将“https”替换为“itms-apps”即可实现跳转。

    展开全文
  • //获取所有信息字典 NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary]; NSString *executableFile = [infoDictionary objectForKey:(NSString *)kCFBundleExecutableKey]; //...

    //获取所有信息字典

    NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];

    NSString *executableFile = [infoDictionary objectForKey:(NSString *)kCFBundleExecutableKey]; //获取项目名称


    NSLog(@"executableFile == %@",executableFile);


    NSString *version = [infoDictionary objectForKey:(NSString *)kCFBundleVersionKey]; //获取项目版本号

    NSLog(@"version .. %@",version);


    // app名称

    NSString *app_Name = [infoDictionary objectForKey:@"CFBundleDisplayName"];

    NSLog(@"app_Name == %@",app_Name);


    // app版本

    NSString *app_Version = [infoDictionary objectForKey:@"CFBundleShortVersionString"];

    NSLog(@"app_Version .. %@",app_Version);

    // app build版本

    NSString *app_build = [infoDictionary objectForKey:@"CFBundleVersion"];

    NSLog(@"app_build >> %@",app_build);


    展开全文
  • App在处理网络资源时,一般都会做离线缓存处理,其中最典型离线缓存框架为SDWebImage。 但是,离线缓存会占用一定的存储空间,所以缓存清理功能基本成为资讯、购物、阅读类app的标配功能。 下面用代码来分别介绍...

    App在处理网络资源时,一般都会做离线缓存处理,其中最典型离线缓存框架为SDWebImage。

    但是,离线缓存会占用一定的存储空间,所以缓存清理功能基本成为资讯、购物、阅读类app的标配功能。

    下面用代码来分别介绍缓存文件大小的获取及清除缓存。

    缓存文件大小的获取

    我们可以新建一个工具类,并在类中定义一个类方法,声明如下:

    /**
     * 获取文件夹尺寸
     * @param directoryPath 文件夹路径
     * @param complete 计算完毕的Block回调
     */
    
    + (void)getCacheSize:(NSString *)directoryPath complete:(void(^)(NSInteger))complete;
    

    相应的实现如下:

    + (void)getCacheSize:(NSString *)directoryPath complete:(void(^)(NSInteger))complete
    {
        /*
         // 获取caches 文件夹路径
         NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, true) firstObject];
         
         // 获取default路径
         NSString *defaultPath = [cachePath stringByAppendingPathComponent:@"default"];
         */
        // 遍历文件夹所有文件,一个一个加起来
        
        // 获取文件管理者
        NSFileManager *mgr = [NSFileManager defaultManager];
        // 判断是否是文件夹
        BOOL isDirectory;
        BOOL isExist =  [mgr fileExistsAtPath:directoryPath isDirectory:&isDirectory];
        if (!isDirectory || !isExist){
            // 抛出异常 name 异常名称 reason报错原因
             NSException *excp =[NSException exceptionWithName:@"directory path error" reason:@"需要传入的是存在的文件夹的路径" userInfo:nil];
            [excp raise];
        };
        
        // 开启异步
        dispatch_async(dispatch_get_global_queue(0, 0), ^{
            
            // 获取文件夹下所有的子路径 包括子路径的子路径
            NSArray *subPaths = [mgr subpathsAtPath:directoryPath];
            NSInteger totalSize = 0;
            for (NSString *subPath in subPaths) {
                // 获取到的文件的全路径
                NSString *filePath = [directoryPath stringByAppendingPathComponent:subPath];
                
                // 忽略隐藏文件
                if([filePath containsString:@".DS"]) continue;
                
                
                 // 判断是否是文件夹
                 BOOL isDirectory;
                 BOOL isExist =  [mgr fileExistsAtPath:filePath isDirectory:&isDirectory];
                 
                if(isDirectory || !isExist) continue;
                
                //获取文件属性 attributesOfItemAtPath 只能回去文件尺寸,获取文件夹不对
                NSDictionary *attr = [mgr attributesOfItemAtPath:filePath error:nil];
                
                // default尺寸
                NSInteger fileSize = [attr fileSize];
                
                totalSize += fileSize;
            }
            NSLog(@"缓存大小:%ld",totalSize);
            
            dispatch_sync(dispatch_get_main_queue(), ^{
                //block回调
                if (complete) {
                    complete(totalSize);
                }
            });
        });
       
    }
    

    清除缓存

    方法的声明

    /**
     * 清空缓存
     * @param directoryPath 文件夹路径
     */
    + (void)removeCache:(NSString *)directoryPath;
    

    方法的实现

    + (void)removeCache:(NSString *)directoryPath
    {
        // 清空缓存cache中的所有文件夹
        // 获取文件管理者
        NSFileManager *mgr = [NSFileManager defaultManager];
        BOOL isDirectory;
        BOOL isExist =  [mgr fileExistsAtPath:directoryPath isDirectory:&isDirectory];
        if (!isDirectory || !isExist){
            // 抛出异常 name 异常名称 reason报错原因
            NSException *excp =[NSException exceptionWithName:@"directory path error" reason:@"需要传入的是存在的文件夹的路径" userInfo:nil];
            [excp raise];
        };
        
        // 获取文件夹下所有文件。不包括子路径的子路径
        NSArray *subPaths = [mgr contentsOfDirectoryAtPath:directoryPath error:nil];
        for (NSString *subPath in subPaths) {
            // 拼接完整路径
            NSString *filePath = [directoryPath stringByAppendingPathComponent:subPath];
            
            // 删除路径
            [mgr removeItemAtPath:filePath error:nil];
        }
    }
    
    展开全文
  • 之前知道如何获取一个iOS设备上安装的App列表,但是App信息获取有限,现在对如何获取iOS设备上的App的其它信息的获取加以说明,具体获取方式如下: Class LSApplicationWorkspace_class = objc_getClass(...
  • ios获取app版本号

    2014-02-24 11:11:55
    看代码的时候看到一句,用于获取.plist文件的版本号 labelVersion.text = [NSString stringWithFormat:@"v%@", [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString*)kCFBundleVersionKey]]; ...
  • NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];   CFShow(infoDictionary);... NSString *app_Name = [infoDictionary objectForKey:@"CFBundleDisplayName"];   // app
  • iOS 获取appstore 版本号

    2015-08-12 16:00:29
    项目上线以后一般都涉及到升级,那么iOS 如何从appstore获取到版本号 其实很简单 NSString *url = [[NSString alloc] initWithFormat:@"http://itunes.apple.com/lookup?id=%@",@"987953868"]; 其中 最后一...
  • Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");NSObject* workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)];NSLog(@"apps: %@", [worksp
  • 这个方法获取到了 但听说上不了AppStore 而且只实现获取列表没有图标 //#pragma mark 获取手机内安装的程序 Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace"); NSObject* ...
  • // 获取当前App的基本信息字典   NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];  //app名称   NSString *app_Name = [infoDictionary objectForKey:@...
  • 使用之前先到这里看申请方法https://forums.developer.apple.com/message/30657#30657,申请成功后就可以使用这个框架NetworkExtension #import NSArray * networkInterfaces = [NEHotspotHelper ...
  •   相关文章 ...1、iOS获取App ipa包----https://www.jianshu.com/p/7710c68f38cf 2、iOS程序破解:获取应用商店上应用的ipa程序包----https://blog.csdn.net/skylin19840101/article/details/620...
  • iOS获取应用列表

    2012-09-19 15:19:25
    ios中要列出已安装的软件目前有3中方法:(据我所知) 1.我之前的文章有2种方法获取,详情请移步: http://www.iloss.me/?p=844  2.用系统提供的函数,应该比上面2种方法要方便,安全,高效。(但据我测试系统的也...
  • iOS获取App Assets图片的方式 本节小编介绍一下如何获取iOS平台app的图片问题。在很多年前,我们要想获取一款iOS app的图片资源很简单,就是在mac os下使用iTunes下载app,然后右击显示包内容就OK了。 如今不...
  • //联系人:石虎 QQ:1224614774 昵称:嗡嘛呢叭咪哄 /**  1.图形显示  2.代码实现  3.下载 demo  */ 一、图形展示 图1: 图2: 二、代码实现 // // ViewController.m ...// Cr
  • 1.清除APP缓存: /* 自定义方法,清除APP缓存 */ - (void)clearCache{ //获取文件管理器 NSFileManager *fileM = [NSFileManager defaultManager]; //获取缓存路径 NSString *cachePath = ...
  • iOS Wifi 列表获取

    2020-02-11 17:33:05
    iOS获取 Wifi 列表其实有很大限制,在 iOS 9 以前是不能获取Wifi列表的,只能获取当前连接的 Wifi 信息,也就表示只有连接了 Wifi 才能定位。 Apple 在 iOS 9 以后,提供了获取Wifi列表的API,但是获取Wifi列表是...
  • 获取IOS应用安装列表

    2014-08-24 18:49:05
    当两天没事儿,突然想起这么一个命题:获取IOS应用安装列表。 研究来研究去最后也没有得出个所以然来。这不今天上网,发现这篇儿文章。晾这说有三种方法。也就顺便总结一下,边转载边补充。 ok,说是三种方法,...
1 2 3 4 5 ... 20
收藏数 103,446
精华内容 41,378