Bản tin Swift Việt Nam #9
Bài đăng này đã không được cập nhật trong 4 năm
Bản tin Swift Việt Nam #9
Tuần vừa rồi Apple đã phát hành Beta 3 cho Xcode 12, iOS và iPadOS với một số APIs mới. Apple cũng đã opensource thư viện Exposure Notification. Thư viện này được các nước trên thế giới sử dụng để xây dựng các app contac tracing giúp cho công việc chống lại COVID-19. Mình có tìm hiểu ở Việt Nam có app Bluezone được phát triển bởi BKAV lại không dùng thư viện này. Rất mong các phiên bản tiếp theo của Bluezone sẽ được cập nhật để sử dụng thư viện này vì nó được hỗ trợ trực tiếp từ Apple. Bản thân mình cũng đang tham gia một dự án liên quan đến thư viện này nên mình rất ủng hộ việc sử dụng Exposure Notification Framework. Tuy nhiên điểm yếu của việc này là chỉ có máy cài được iOS 13 trở lên mới sử dụng được Exposure Notification Framework.
Swift:
async
keyword
Ai viết C# hoặc Javascript chắc quen với keyword async, await rồi. Với async, await, các code concurrency sẽ dễ viết hơn và logic sẽ dễ hiểu hơn. 👉 Trên Github của Swift vừa có một PR để giới thiệu keyword async cho Swift 👉 Anh Lattner cũng đã từng có bài Swift Concurrency Manifesto từ 3 năm trước, trong đó nhắc đến async và await tại đây
Mã nguồn mở Exposure Notification Framework
Apple đã cung cấp mã nguồn của Exposure Notification Framework để mọi người tham khảo. Điểm đặc biệt là mã nguồn được viết bằng Objective-C 😃.
Bài viết:
Sử dụng OSLog
Với lập trình viên chúng ta, việc có logging data từ các app chúng ta viết là việc cực kỳ quan trong, không chỉ giúp ích cho việc tìm bugs mà còn giúp cho chúng ta hiểu được hành vi của người dùng. Với việc Apple thắt chặt các quyền riêng tư trên iOS 14, việc sử dụng các frameworks như Firebase Craslytics/Firebase Analytics/Sentry sẽ khó khăn hơn. Một giải pháp cho việc này là sử dụng các thành phần có sẵn của hệ điều hành như OSLog hay MetricKit. Trang SwiftLee có giới thiệu về cách sử dụng OSLog tại đây. Thông tin về MetricKit, các bạn có thể xem trực tiếp từ WWDC video này.
Sử dụng CoreData với SwiftUI trong Xcode 12
Nếu các bạn tạo project SwiftUI mới trong Xcode 12, các bạn sẽ không thấy AppDelegate
hay SceneDelegate
nữa, gây khó khăn cho việc thiết lập CoreData
. Donny Wals có giới thiệu một cách để các bạn thiết lập CoreData và kết nối nó với phần UI tại đây.
Thêm resources vào Swift Package Manager
Từ Xcode 11, chúng ta có thể sử dụng Swift Package Manager, nhưng nó chỉ hỗ trợ các package chỉ có source code (tức là không có resource như hình ảnh, tập tin không phải Swift hay Objective-C). Từ Xcode 12, SPM đã hỗ trợ việc thêm các resources này vào package. Bạn có thể xem hướng dẫn chi tiết cách thêm và sử dụng resources trong SPM tại đây.
Mã nguồn:
RSS Reader NetNewsWire
NetNewsWire là một ứng dụng RSS Reader mã nguồn mở dành cho tất cả các Apple platforms. Một điều thú vị là các maintainer của ứng dụng đã quyết định chuyển sang dùng SwiftUI. Đây là cơ hội tuyệt vời để các bạn học SwiftUI được mang những kỹ năng của mình ứng dụng vào thự tế, và vừa đóng góp được cho một úng dụng nguồn mở hay. Chi tiết về việc học SwiftUI với ứng dụng NetNewsWire tại đây.
Virtualization Framework
Anh bạn KhaosT đã làm mộtt thử nghiệm để chạy Ubuntu trong macOS app sử dụng Virtualization Framework. Các bạn tham khảo mã nguồn ở đây.
Snap
Một UX design pattern khá phổ biến hiện nay là bottom drawer. Chúng ta có thể thấy nó ở Apple Maps, Apple Music hay Google Maps. Nếu bạn sử dụng SwiftUI, bạn có thể tham khảo [Snap], nếu bạn sử dụng UIKit, bạn có thể tham khảo ContainerController
Network library của Spotify
Spotify tuần vừa rồi cũng giới thiệu một network library mà họ dùng trong app của họ, có tên là SPTDataLoader. Library này xây dựng dựa trên NSURLSession và hỗ trợ authentication + back-off policy. Các bạn tham khảo mã nguồn trên Github nhé
Lời kết:
Tuần tới mình sẽ relocate sang Singapore nên sẽ khá bận. Rất có thể bài viết cho tuần tới sẽ bị muộn hơn so với mọi lần, các bạn thông cảm nhé.
Nếu các bạn có các bài viết liên quan đến Swift, WWDC và muốn chia sẻ với cộng động thì các bạn kết nối với mình để thảo luận thêm nhé.
Các bạn cũng nhớ theo dõi trang Facebook Swift Việt Nam để được cập nhật các thông tin mới nhất về Swift và cộng đồng lập trình viên Swift Việt Nam nhé.
All rights reserved