Tác giả: Vera Xia và Steve Kim | ngày 31 tháng 3 năm 2025 | Chuyên mục: Announcements, AWS IoT Core, AWS SDK for Swift, Developer Tools, Intermediate (200), Internet of Things, Permalink | Share
Hôm nay, AWS ra mắt bản developer preview của AWS IoT Device SDK for Swift. SDK này giúp các lập trình viên Swift có thể tạo ra các ứng dụng IoT dành cho các nền tảng Linux, Apple macOS, iOS, và tvOS bằng cách sử dụng giao thức MQTT 5.
SDK hỗ trợ Swift 5.10+ và được thiết kế nhằm giúp các nhà phát triển dễ dàng tích hợp với các dịch vụ AWS IoT.
Các tính năng chính của AWS IoT Device SDK for Swift
- Swift integration: Tận dụng ngôn ngữ lập trình Swift hiện đại để phát triển các ứng dụng IoT.
- Platform compatibility: Được thiết kế để hỗ trợ các nền tảng macOS, iOS, tvOS, và Linux.
- TLS 1.3 support: Tích hợp sẵn hỗ trợ TLS 1.3 trên các nền tảng Apple iOS và tvOS, đảm bảo các ứng dụng IoT sử dụng những tiêu chuẩn bảo mật mới nhất trong ngành để bảo vệ dữ liệu khi truyền tải (data in-transit). MQTT version 5 (MQTT 5) support: MQTT 5 mang lại nhiều lợi ích so với các phiên bản giao thức trước đó, bao gồm khả năng xử lý và báo cáo lỗi tốt hơn, khả năng mở rộng cao hơn với shared subscriptions, và các thuộc tính người dùng có thể tùy chỉnh. Tham khảo MQTT 5 User Guide để tìm hiểu thêm.
- Async APIs: SDK sử dụng asynchronous APIs, giúp bạn dễ dàng phát triển các ứng dụng phản hồi nhanh và linh hoạt hơn.
Bắt đầu
Các ví dụ trong AWS IoT Device SDK for Swift minh họa những cách đơn giản và chuẩn mực để phát triển ứng dụng của bạn bằng cách sử dụng MQTT 5 client để truy cập các dịch vụ AWS IoT.
Đoạn mã dưới đây minh họa cách thiết lập một MQTT client sử dụng mTLS để xác thực. Mqtt5ClientBuilder giúp đơn giản hóa việc thiết lập MQTT 5 client và quản lý kết nối bằng Swift.
let cert_filepath = "<certificate file path>"
let private_key_filepath = "<private key file path>"
let clientBuilder = try Mqtt5ClientBuilder.mtlsFromPath(
certPath: cert_filepath,
keyPath: private_key_filepath,
endpoint: your_iot_endpoint)
let mqttClient = try clientBuilder.build()
// Open the connection after the client is built
try client.start()
Sau khi client kết nối thành công, bạn có thể đăng ký (subscribe) vào các chủ đề (topics) và gửi thông điệp (publish messages) trên đó. Các thao tác publish và subscribe sử dụng asynchronous API, giúp mã nguồn dễ hiểu và dễ quản lý hơn, đồng thời tận dụng được lợi ích của thực thi song song (concurrent execution).
// Setup a publish packet
let publishPacket: PublishPacket = PublishPacket(qos: .atLeastOnce,
topic: "test/topic",
payload: "HELLO WORLD!".data(using: .utf8))
// Async-await on publish operation
let publishResult: PublishResult = try await client.publish(
publishPacket: publishPacket)
if let puback = publishResult.puback {
print(
"Publish operation finished with reasonCode: \(puback.reasonCode)"
)
}
AWS IoT Device SDK for Swift bao gồm danh sách đầy đủ các ví dụ minh họa những phương thức kết nối khác nhau, bao gồm:
- Direct MQTT with Certificate and Private Key File
- Direct MQTT with Custom Authentication
- Direct MQTT with PKCS12
- MQTT over WebSockets with Sigv4 authentication
- MQTT over WebSockets with Amazon Cognito Credential Provider
Hỗ trợ iOS và tvOS
Với khả năng hỗ trợ iOS và tvOS, SDK được tích hợp liền mạch với Apple’s keychain để lưu trữ và truy xuất thông tin xác thực một cách an toàn. Để giúp bạn bắt đầu nhanh chóng, chúng tôi cung cấp một ví dụ iOS PubSub chuyên biệt, minh họa cách thực hiện các thao tác đăng ký (subscription) và gửi thông điệp (message publishing) bằng MQTT 5.
Sau khi bạn khởi chạy ứng dụng mẫu (như hình minh họa bên dưới), bạn có thể tương tác với ứng dụng để thiết lập một MQTT client. Client này có thể được sử dụng để thiết lập kết nối với AWS IoT Core message broker và gửi thông điệp đến AWS IoT Core. Ứng dụng mẫu cũng sẽ hiển thị các thông điệp nhận được trên topic thử nghiệm.