IOS开发基础知识--碎片49

1:iOS项目配置文件info.plist文件解析linux

Localization native development region本地化

Executable file可执行文件路径

Bundle identifier应用的惟一标识

InfoDictionary version plist文件的版本号

Bundle name安装的时候建立的文件夹的名称

Bundle display name程序安装到手机上的时候,桌面的显示名称

Bundle versions string, short   iTunes上展现的版本号

Bundle version上传到APP Sore须要用的版本号

Application requires iPhone environment应用运行的环境

Launch screen interface file base name启动界面的配置

Main storyboard file base name主storyboard

Required device capabilities cup的架构

Supported interface orientations横竖屏的支持

View controller-based status bar appearance是否取消控制器管理状态栏

2:iOS最新的权限设置git

<!-- 相册 --> 
<key>NSPhotoLibraryUsageDescription</key> 
<string>App须要您的赞成,才能访问相册</string> 
<!-- 相机 --> 
<key>NSCameraUsageDescription</key> 
<string>App须要您的赞成,才能访问相机</string> 
<!-- 麦克风 --> 
<key>NSMicrophoneUsageDescription</key> 
<string>App须要您的赞成,才能访问麦克风</string> 
<!-- 位置 --> 
<key>NSLocationUsageDescription</key> 
<string>App须要您的赞成,才能访问位置</string> 
<!-- 在使用期间访问位置 --> 
<key>NSLocationWhenInUseUsageDescription</key> 
<string>App须要您的赞成,才能在使用期间访问位置</string> 
<!-- 始终访问位置 --> 
<key>NSLocationAlwaysUsageDescription</key> 
<string>App须要您的赞成,才能始终访问位置</string> 
<!-- 日历 --> 
<key>NSCalendarsUsageDescription</key> 
<string>App须要您的赞成,才能访问日历</string> 
<!-- 提醒事项 --> 
<key>NSRemindersUsageDescription</key> 
<string>App须要您的赞成,才能访问提醒事项</string> 
<!-- 运动与健身 --> 
<key>NSMotionUsageDescription</key> <string>App须要您的赞成,才能访问运动与健身</string> 
<!-- 健康更新 --> 
<key>NSHealthUpdateUsageDescription</key> 
<string>App须要您的赞成,才能访问健康更新 </string> 
<!-- 健康分享 --> 
<key>NSHealthShareUsageDescription</key> 
<string>App须要您的赞成,才能访问健康分享</string> 
<!-- 蓝牙 --> 
<key>NSBluetoothPeripheralUsageDescription</key> 
<string>App须要您的赞成,才能访问蓝牙</string> 
<!-- 媒体资料库 --> 
<key>NSAppleMusicUsageDescription</key> 
<string>App须要您的赞成,才能访问媒体资料库</string>

 3:关于openURLgithub

苹果在iOS 2中引入了openURL:方法来进行APP间的跳转。不过在iOS 9中,相关的canOpenURL在iOS 10中,苹果已弃用了openURL,转而用openURL:options:completionHandler:替代,IOS10 已经没法打开系统设置等,因此下面的方法只有在其它跳转能够用,而且要用到后面的方法必须在XCODE8上面运行;web

旧:浏览器

(BOOL)openURL:(NSURL*)urlruby

新:网络

(void)openURL:(NSURL*)url options:(NSDictionary *)options架构

  completionHandler:(void (^ __nullable)(BOOL success))completionapp

兼容方法:curl

- (void)openScheme:(NSString *)scheme {
  UIApplication *application = [UIApplication sharedApplication];
  NSURL *URL = [NSURL URLWithString:scheme];
 
  if ([application respondsToSelector:@selector(openURL:options:completionHandler:)]) {
    [application openURL:URL options:@{}
       completionHandler:^(BOOL success) {
      NSLog(@"Open %@: %d",scheme,success);
    }];
  } else {
    BOOL success = [application openURL:URL];
    NSLog(@"Open %@: %d",scheme,success);
  }
}

 4:关于XCode 7的下载地址

(须要登陆苹果开发者账号)

7.2.1:https://developer.apple.com/services-account/download?path=/Developer_Tools/Xcode_7.2.1/Xcode_7.2.1.dmg

7.2 : https://developer.apple.com/services-account/download?path=/Developer_Tools/Xcode_7.2/Xcode_7.2.dmg

7.1.1: https://developer.apple.com/services-account/download?path=/Developer_Tools/Xcode_7.1.1/Xcode_7.1.1.dmg

7.1 : https://developer.apple.com/services-account/download?path=/Developer_Tools/Xcode_7.1/Xcode_7.1.dmg

7.0 : https://developer.apple.com/services-account/download?path=/Developer_Tools/Xcode_7/Xcode_7.dmg

5:iCloud相关知识点

iCloudIOS5之后一个比较重要的内容;每一个Apple ID用户都有一个免费的iCloud帐户,可是用户可能禁用某个设备的iCloudiCloud支持两种应用存储分别为:

 

1.1 document storage:存储用户文档和应用数据到用户的iCloud帐户;使用Document Storage来管理应用的关键数据。与应用直接相关的文件和数据,老是应该使用Document Storage。如用户文档、私有的app数据文件、以及应用或用户生成的数据文件;只受用户iCloud帐户的空间限制;设备端发生变化时,iCloud老是会拉取文件元数据和数据;设备老是会拉取文件元数据,可是直到应用试图使用文件时才会拉取文件数据;大部分咱们都是结合这种进行存储;

 

1.2 key-value data storage:分享小量的非关键配置数据到应用的多个实例;参数或其它配置数据,若是须要在多个app实例之间共享,而且不是关键数据,就可使用key-vlaue storage。只能存储property list数据,而且容量有限,限制为64KB;按期在设备和iCloud之间传输key-value数据;

 

关于document storage存储文件的实例git上已经有一个不错的例子,能够实现上传文件 多台设备共享的效果;地址:https://github.com/iRareMedia/iCloudDocumentSync 

 

若是想查看iCloud上保存的这些文件能够安装一个软件:http://cookingrobot.de/posts/plain-cloud

 

iCloud 的全部文件同步操做都是用过驻留在系统的一个进程进行的。 也就是说你的 App 所对应的 iCloud 目录,除了你的 App 进程会操做它, iCloud Daemon 也会操做它。在 iOS 系统中, iCloud Daemon 由于手机耗电以及网络流量等考虑, 是不会自动下载其余设备新添加到容器中的文件的;会将这些新文件的元信息(MetaData)传输过来,好比文件名,文件尺寸,修改时间等等。也就是说咱们须要查询文件元信息的列表,就能够获得和服务端同步的文件列表了。 只有你请求打开某个文件的时候才会去下载它的内容。但在 Mac 笔记本上,那么其余设备只要向 iCloud 容器中添加新的文件,你的 iCloud Daemon 进程就会自动的将它们下载下来。

 

iCloud 最简单的存在形式其实就是一个特定的文件夹,它位于 iOS 设备的/private/var/mobile/Library/Mobile Documents/目录下。该目录中保存有各应用共享至云端的全部应用数据。 应用程序对该目录有部分读写权限,该权限是开发人员特有的。对于密码钥匙串,开发人员能够在各应用间共享云端数据。好比,X 公司开发的全部应用能够共享、查看以及更新相同的文件集。你没法共享你开发者帐户之外的数据,因此个人应用没法看到 X 公司的文件,反之亦然。 iOS 系统监控着 Mobile Documents 文件夹。当文件被更改,设备会自动的将这些更改上传至云端。从而这些更改就能够传输至同一帐号绑定的全部设备上。这些操做都由本地操做系统服务进行处理,应用程序不直接参与其中。 相反,应用程序经过订阅不一样种类的通知来让应用知道最新发生的更改。而后,它们能够经过对比本地和 iCloud 端的数据差别从而来处理数据版本冲突。 至于开发者如何作就是他们的事了。他们能够选择“最近更改有效”策略。或者他们能够结合一些其余方式的更改。应用程序的职责就在于确保不一样硬件设备单元上的数据保持一致,同时也须要可用的网络链接来处理这种一致性。 当用户失去网络链接的时候,麻烦事就来了。好比,你也许在没有网络链接的航班上编辑待办事项,与此同时你的伴侣在他或她所在的城市正在更新同一份待办事项。开发者们为此工做了数月,研究如何在同时接受双方修改的前提下结合这些更改并更新目标文件的策略。 最后,iCloud API 接口方式或许会不多。它实际上就只是一个异地同步的存储文件夹。正是由于能够在多台的苹果设备上对iCloud的同一个文件进行操做,因此会致使冲突,解决这种冲突也是很麻烦;

 

WWDC 2015 中提到,CloudKit 已经不只能够在 iOS OS X 上使用,能够在你的网站上集成CloudKit JS,以便 iCloud 用户能够在浏览器中也能使用相应的功能,或者是使用CloudKit web service CloudKit 服务端直接进行 HTTP 请求。这方面可能得其它平台进行验证;

 

 

6:Homebrew简介及安装

 

Homebrew是神马

linux系统有个让人蛋疼的通病,软件包依赖,好在当前主流的两大发行版本都自带了解决方案,Red hat有yum,Ubuntu有apt-get

 神马,你用mac os,很差意Mac os木有相似的东东,泪奔中几经折腾总算找到了第三方支持:Homebrew,Homebrew简称brew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件,能够说Homebrew就是mac下的apt-get、yum神器

Homebrew安装

Homebrew的安装很是简单,打开终端复制、粘贴如下命令,回车,搞定(请放心使用,原汁原味的官方安装方法搬运)

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

ps:不知道为何执行这个命令有时会返回400,估计可能被墙了,过几分钟重试下通常就ok了,有图有真相

Homebrew使用

Homebrew使用没啥好说的了,经常使用的

搜索软件:brew search 软件名,如brew search wget

安装软件:brew install 软件名,如brew install wget

卸载软件:brew remove 软件名,如brew remove wget

 

7:在MBProgressHUD增长一个动做效果

UIWindow *window = [UIApplication sharedApplication].keyWindow;
UIImageView *imageV = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 60, 60)];
UIImage *image1 = [UIImage imageNamed:@"bls_loading_1"];
UIImage *image2 = [UIImage imageNamed:@"bls_loading_2"];
imageV.animationImages = @[image1,image2];
imageV.animationDuration = 0.5;
[imageV startAnimating];

self.MBHUD = [MBProgressHUD showHUDAddedTo:window animated:YES];
self.MBHUD.mode = MBProgressHUDModeCustomView;
self.MBHUD.customView = imageV;
self.MBHUD.labelText = string;
self.MBHUD.color = [UIColor colorWithWhite:1 alpha:0.8];
self.MBHUD.labelColor = HEXCOLOR(0xffae00);
self.MBHUD.labelFont = CHINESE_SYSTEM(14);
self.MBHUD.userInteractionEnabled = NO;
self.MBHUD.square = YES;

 

8:BabyBluetooth得到MAC地址 

    //设置扫描到设备的委托
    [self.baby setBlockOnDiscoverToPeripherals:^(CBCentralManager *central, CBPeripheral *peripheral, NSDictionary *advertisementData, NSNumber *RSSI) {
        MPStrongSelf(self);
        
        NSData *data = [advertisementData objectForKey:@"kCBAdvDataManufacturerData"];
        NSString *mac = [self convertToNSStringWithNSData:data];
        mac = [mac stringByReplacingOccurrencesOfString:@" " withString:@""];
    
        
        [self.babyMutableArray addObject:peripheral];
        [self.badyTableView reloadData];
    }];

  

- (NSString *)convertToNSStringWithNSData:(NSData *)data
{
    NSMutableString *strTemp = [NSMutableString stringWithCapacity:[data length]*2];
    
    const unsigned char *szBuffer = [data bytes];
    
    for (NSInteger i=0; i < [data length]; ++i) {
        
        [strTemp appendFormat:@"%02lx",(unsigned long)szBuffer[i]];
        
    }
    
    return strTemp;
}
相关文章
相关标签/搜索