更新日期說(shuō)明
從2020年4月開(kāi)始,提交給App Store的所有iPhone和iPad應(yīng)用程序都必須使用iOS 13 SDK或更高版本構(gòu)建。他們還必須支持iPhone X S Max或12.9英寸iPad Pro(第三代)或更高版本的全屏設(shè)計(jì)。
從2020年4月開(kāi)始,所有使? iOS13 SDK 的 App 將必須提供 LaunchScreen,LaunchImage即將退出歷史舞臺(tái)。
iOS 13 相關(guān)更新
借助iOS 13 SDK,您的應(yīng)用程序可以利用黑暗模式,通過(guò)Apple登錄,與CloudKit同步的Core Data,PencilKit等優(yōu)勢(shì)。您可以使用SwiftUI更快地構(gòu)建動(dòng)態(tài)用戶(hù)界面,使用Combine編寫(xiě)現(xiàn)代事件處理代碼,并使用UIKit創(chuàng)建iPad應(yīng)用程序的Mac版本。
暗黑模式
使用iOS 13,用戶(hù)可以切換到“暗模式”以將iOS轉(zhuǎn)換為深色配色方案,將重點(diǎn)放在工作上,而控件則退到后臺(tái)。有關(guān)將“暗模式”并入您的應(yīng)用程序的信息。
適配具體詳情請(qǐng)參考官方說(shuō)明:外觀(guān)定制
SwiftUI
SwiftUI是一種現(xiàn)代方法,可為iOS,macOS,watchOS和tvOS構(gòu)建用戶(hù)界面。使用基于組合的聲明式編程,您可以比以往更快地構(gòu)建動(dòng)態(tài)接口。該框架提供了用于聲明應(yīng)用程序用戶(hù)界面的視圖,控件和布局結(jié)構(gòu)。它還提供事件處理程序,用于向您的應(yīng)用程序傳遞敲擊,手勢(shì)和其他類(lèi)型的輸入,并提供工具來(lái)管理從應(yīng)用程序模型到用戶(hù)將看到并與之交互的視圖和控件的數(shù)據(jù)流。
具體可參看官方
SwiftUI 教程
Combine框架
Combine是一個(gè)新框架,提供了聲明性的Swift API,用于隨時(shí)間推移處理值。這些值可以表示用戶(hù)界面事件,網(wǎng)絡(luò)響應(yīng),計(jì)劃的事件以及許多其他類(lèi)型的異步數(shù)據(jù)。使用合并,可以聲明發(fā)布者公開(kāi)可以更改的值,以及訂閱者從發(fā)布者那里接收這些值。組合通過(guò)集中事件處理代碼并消除麻煩的技術(shù)(例如嵌套閉包和基于約定的回調(diào)),使您的代碼更易于閱讀和維護(hù)。
詳情參看:Combine技術(shù)文檔
使用Apple登錄
使用Apple登錄可以為人們提供一種快速,安全且隱私友好的方式,供人們?cè)O(shè)置帳戶(hù)并開(kāi)始使用您的應(yīng)用程序和網(wǎng)站中的服務(wù)。
相關(guān)技術(shù)說(shuō)明,可前往官方說(shuō)明
關(guān)于使用Apple登錄場(chǎng)景官方說(shuō)明如下:
僅使用第三方或社交登錄服務(wù)(例如Facebook登錄,Google登錄,Twitter登錄,LinkedIn登錄,Amazon登錄或微信登錄)的應(yīng)用來(lái)設(shè)置或驗(yàn)證用戶(hù)的主帳戶(hù)該應(yīng)用程序還必須提供“與Apple登錄”作為等效選項(xiàng)。用戶(hù)的主要帳戶(hù)是他們與您的應(yīng)用建立的帳戶(hù),用于識(shí)別自己,登錄并訪(fǎng)問(wèn)您的功能和相關(guān)服務(wù)。
如果滿(mǎn)足以下條件,則無(wú)需使用Apple登錄:
- 您的應(yīng)用程序?qū)iT(mén)使用公司自己的帳戶(hù)設(shè)置和登錄系統(tǒng)。
- 您的應(yīng)用是教育,企業(yè)或商業(yè)應(yīng)用,要求用戶(hù)使用現(xiàn)有的教育或企業(yè)帳戶(hù)登錄。
- 您的應(yīng)用程序使用政府或行業(yè)支持的公民身份識(shí)別系統(tǒng)或電子ID來(lái)對(duì)用戶(hù)進(jìn)行身份驗(yàn)證。
- 您的應(yīng)用是特定第三方服務(wù)的客戶(hù)端,要求用戶(hù)直接登錄其郵件,社交媒體或其他第三方帳戶(hù)才能訪(fǎng)問(wèn)其內(nèi)容。
更多iOS13更新說(shuō)明可參考官方What’s New in the iOS SDK
關(guān)于iOS13和13.1 API變動(dòng)的一些說(shuō)明
iOS 13 不再支持 UIApplicationExitsOnSuspend。 需要更新應(yīng)用以處理現(xiàn)代多任務(wù)處理。
不建議使用OpenAL框架,為了兼容起見(jiàn),它仍然存在。轉(zhuǎn)換為空間音頻功能:AVAudioEngine
AUGraph在AVAudioEngine已經(jīng)被棄用。
從iOS 8開(kāi)始,將 UISearchController 與 UINavigationController 一起使用需要將頂視圖控制器的 definesPresentationContext 屬性設(shè)置為 true。如果不這樣做會(huì)導(dǎo)致難以檢測(cè)和調(diào)試的細(xì)微錯(cuò)誤。從 iOS & iPadOS 13 beta 開(kāi)始,如果視圖控制器的 navigationItem 具有 non-nil 搜索控件,當(dāng)視圖控制器顯示在導(dǎo)航控制器中時(shí),UINavigationController 會(huì)自動(dòng)將該視圖控制器的 definesPresentationContext 屬性設(shè)置為 true
swiftUI :現(xiàn)在通過(guò)UIColor或建一個(gè)NSColor來(lái)創(chuàng)建color。
BindableObject被替換為Combine框架中的協(xié)議ObservableObject。
更新API比較多,這里不做過(guò)多說(shuō)明了。
更多可API更新說(shuō)明可參考官方:
iOS13 注意事項(xiàng)特別說(shuō)明:
- 使用textField一些私有KVC在xcode11上運(yùn)行會(huì)崩潰。
比如:
[_textField setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"];//崩潰
[_textField setValue:[UIFont systemFontOfSize:14] forKeyPath:@"_placeholderLabel.font"];//崩潰
在iOS13中modalPresentationStyle的默認(rèn)改為UIModalPresentationAutomatic,而在之前默認(rèn)是UIModalPresentationFullScreen。這可能會(huì)導(dǎo)致presentViewController的問(wèn)題。
獲取deviceToken適配
。iOS13的一個(gè)重要變化是"[deviceToken
description]" 會(huì)受不同運(yùn)行環(huán)境及系統(tǒng)的影響而發(fā)生變化。
這里我們可以參考友盟的deviceToken適配
- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
if (![deviceToken isKindOfClass:[NSData class]]) return;
const unsigned *tokenBytes = (const unsigned *)[deviceToken bytes];
NSString *hexToken = [NSString stringWithFormat:@"%08x%08x%08x%08x%08x%08x%08x%08x",
ntohl(tokenBytes[0]), ntohl(tokenBytes[1]), ntohl(tokenBytes[2]),
ntohl(tokenBytes[3]), ntohl(tokenBytes[4]), ntohl(tokenBytes[5]),
ntohl(tokenBytes[6]), ntohl(tokenBytes[7])];
NSLog(@"deviceToken:%@",hexToken);
}
- 陸續(xù)有人在打包上傳到 App Store 時(shí)收到蘋(píng)果審核的反饋郵件,提到他們將會(huì)停止接收還在使用 UIWebView API 的應(yīng)用,希望開(kāi)發(fā)者在下次提交的時(shí)候處理好這個(gè)問(wèn)題.當(dāng)然目前只是個(gè)警告。
更多適配可參考:iOS13適配
Xcode 11更新簡(jiǎn)單說(shuō)明
Xcode 11包括Swift 5.1和適用于iOS 13,tvOS 13,watchOS 6和macOS Catalina 10.15的SDK。
Xcode 11支持SwiftUI開(kāi)發(fā)
Xcode 11增加了對(duì)Mac Catalyst的支持,以將iPad應(yīng)用程序引入Mac
Xcode現(xiàn)在支持創(chuàng)建和使用Swift軟件包,以及添加,刪除和管理軟件包依賴(lài)項(xiàng)。Xcode中的軟件包管理支持建立在開(kāi)源Swift Package Manager項(xiàng)目的基礎(chǔ)上。
Xcode默認(rèn)使用響應(yīng)文件將輸入文件傳遞給Swift編譯器。要關(guān)閉此行為,請(qǐng)?jiān)O(shè)置為 USE_SWIFT_RESPONSE_FILE為NO。
更多Xcode11更新可看:
Xcode 11 使用體驗(yàn)可參考: