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;
}
相關文章
相關標籤/搜索