關(guān)于iOS13更新的一些記錄

更新日期說(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)始,將 UISearchControllerUINavigationController 一起使用需要將頂視圖控制器的 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ō)明可參考官方:

關(guān)于iOS13的發(fā)行說(shuō)明

iOS和iPadOS 13.1發(fā)行說(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_FILENO。

更多Xcode11更新可看:

Xcode 11發(fā)現(xiàn)說(shuō)明

Xcode 11 使用體驗(yàn)可參考:

Xcode 11 初體驗(yàn)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容