Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. iOS SDK
Code

Cách sử dụng CloudKit của Apple cho các thông báo đẩy

by
Difficulty:BeginnerLength:MediumLanguages:

Vietnamese (Tiếng Việt) translation by Dai Phong (you can also view the original English article)

Giới thiệu

Apple giới thiệu framework CloudKit của họ cùng với iOS 8 vào năm 2014. Mặc dù mục đích chính của nó là để hoạt động như một cơ sở dữ liệu trực tuyến cho các ứng dụng iOS, nhưng CloudKit còn cung cấp nhiều tính năng khác, bao gồm các thông báo đẩy.

Trong bài này, tôi sẽ hướng dẫn cho bạn cách làm thế nào để sử dụng framework CloudKit để cài đặt các thông báo đẩy cho ứng dụng iOS của bạn. Nếu bạn muốn tìm hiểu thêm về các tính năng khác mà CloudKit cung cấp, bạn có thể đọc hướng dẫn của tôi khái quát cơ bản về framework:

  • Giới thiệu về CloudKit

Hướng dẫn này đòi hỏi bạn phải sử dụng ít nhất là Xcode 8 với Swift 3. Bạn cũng cần phải có một thiết bị vật lý iOS để thử nghiệm và một tài khoản nhà phát triển Apple để bạn có thể sử CloudKit cho ứng dụng của bạn.

1. Tại sao sử dụng CloudKit?

Trước tiên, chúng ta sẽ xem xét ưu điểm (và nhược điểm) trong việc sử dụng CloudKit cho các thông báo đẩy của ứng dụng.

Như bạn sẽ thấy trong hướng dẫn này, để thiết lập các thông báo đẩy với CloudKit, bạn không cần phải lo lắng về việc tạo các chứng chỉ và cung cấp hồ sơ như bạn làm với các dịch vụ đám mây khác. Vì tất cả mọi thứ được tạo ra bởi Apple, tất cả những gì bạn phải làm là bật CloudKit cho ứng dụng của bạn, và mọi thứ còn lại sẽ hoạt động.

Một trong những thứ tốt nhất về CloudKit đối với một số nhà phát triển đó là nó miễn phí. Nhiều công ty Backend-as-a-Service (BaaS) tồn tại và cung cấp các thông báo đẩy cho các ứng dụng iOS, nhưng hầu hết chúng đều có giới hạn về số thông báo có thể được gửi miễn phí. Với CloudKit, không có giới hạn về số lượng các thông báo đẩy mà bạn có thể gửi đến người dùng của bạn. Tuy nhiên, CloudKit miễn phí giới hạn dung lượng lưu trữ dữ liệu, truyền dữ liệu và số lượng mà người dùng yêu cầu mỗi giây.

Một ưu điểm của việc sử dụng CloudKit trong ứng dụng của bạn đó là, được cung cấp bởi Apple, mạng kết nối ổn định và bảo trì tốt sẽ là một cái gì đó mà bạn sẽ không bao giờ phải lo lắng. Việc ngừng dịch vụ đối với Apple là rất hiếm khi xảy ra và khắc phục kịp thời. Điều này có nghĩa là bạn có thể dựa vào CloudKit để luôn luôn duy trì hoạt động cho người dùng của bạn.

Tuy nhiên, một bất lợi mà bạn nên biết khi sử dụng CloudKit là nó hiện không có sẵn trên bất kỳ nền tảng nào khác ngoài Apple. Điều đó có nghĩa rằng nếu bạn muốn tạo ra một phiên bản Android của ứng dụng, thì CloudKit sẽ không hoạt động. Đối với giải pháp đa nền tảng, tôi muốn giới thiệu một BaaS khác chẳng như back4app (được xây dựng dựa trên Parse) như tôi đã đề cập trong hướng dẫn này:

2. Thiết lập CloudKit

Để bắt đầu, tạo ra một dự án mới trong Xcode từ template iOS > Application > Single View Application.

Một khi Xcode đã tạo ra dự án của bạn, vào Project navigator và nhấp vào tab Capabilities. Trên màn hình này, nhấp vào nút kích hoạt iCloud và sau đó tích vào hộp checkbox CloudKit:

Enabling iCloud and CloudKit

Một khi bạn đã kích hoạt CloudKit, bây giờ bạn có thể đi đến Dashboard của CloudKit cho ứng dụng của bạn.

Để gửi thông báo đẩy cho người dùng ứng dụng, chúng ta sẽ tạo ra một record type GlobalNotification sẽ thông báo cho tất cả người dùng khi một record trong record type này được tạo ra. Nếu phần Record Type trong Dashboard của CloudKit không mở ra sau khi bạn đăng nhập, hãy bấm vào nó trong thanh sidebar.

Để tạo một record type mới, bấm vào dấu + ở phía trên của màn hình. Điền vào menu như được hiển thị trong ảnh chụp màn hình sau đây:

GlobalNotification Record Type

Đối với hướng dẫn này, chúng ta chỉ thêm một trường content duy nhất cho record type, nhưng đối với các ứng dụng của riêng bạn, bạn có thể thêm bao nhiêu tuỳ thích.

Khi bạn hoàn tất, hãy nhấp vào nút Save ở góc dưới bên phải.

3. Thiết lập ứng dụng

Quay lại Xcode, mở tập tin AppDelegate.swift của bạn và thêm các câu lệnh import sau đây ở phía trên của code:

Code này sẽ chỉ cần import framework CloudKit và UserNotifications. Chúng ta sẽ sử dụng UserNotifications để quản lý quyền thông báo và các thông báo. Nếu bạn muốn tìm hiểu thêm về framework này, bạn có thể đọc hướng dẫn của tôi khái quát nó ở đây:

Tiếp theo, chỉnh sửa định nghĩa lớp AppDelegate của bạn để làm cho nó phù hợp với giao thức UNUserNotificationCenterDelegate:

Bây giờ, chúng ta cần yêu cầu được cấp quyền để hiển thị thông báo. Để làm như vậy, thay thế phương thức application(_:didFinishLaunchingWithOptions:) của bạn với cái sau đây:

Với code này, chúng ta yêu cầu người dùng cấp quyền để hiển thị thông báo và nếu họ chấp nhận, đăng ký ứng dụng cho thông báo đẩy.

Bây giờ, chúng ta cần phải cài đặt phương thức application(_:didRegisterForRemoteNotificationsWithDeviceToken:). Thêm code sau đây vào lớp AppDelegate:

Với code này, chúng ta trước tiên tạo ra một đối tượng CKQuerySubscription. Đối tượng đăng ký này là những gì sẽ nói cho CloudKit biết nó nên gửi thông báo gì. Khi khởi tạo đăng ký này, chúng ta bao gồm:

  • Tên record type để giám sát.
  • Một predicate có thể được dùng để giới hạn việc đăng ký các record cụ thể trong record type của bạn. Trong hướng dẫn này, chúng ta muốn đăng ký tất cả các record GlobalNotification vì vậy chúng ta truyền vào một predicate mà luôn luôn là true.
  • Một hoặc nhiều trigger nói cho CloudKit biết khi một thông báo được gửi đến. Trong ví dụ này, chúng ta chỉ muốn có một thông báo khi một record mới được tạo ra. Các trigger hợp lệ khác bao gồm khi một record được cập nhật hoặc bị xóa.

Tiếp theo, chúng ta tạo ra một đối tượng CKNotificationInfo, cung cấp cho nó một số nội dung, và sau đó gán nó vào đối tượng subscription. Đối tượng CKNotificationInfo là cách bạn định dạng thông báo đẩy được gửi đến người dùng của bạn. Trong ví dụ này, chúng ta đang cấu hình nó với các thuộc tính sau:

  • Một alertBody với "A new notification has been posted!"
  • Một giá trị shouldBadge là true. Điều này sẽ làm cho biểu tượng ứng dụng trên màn hình tăng số lượng cho mỗi thông báo đến.
  • Một soundName là "default". Điều này sẽ chỉ sử dụng âm thanh thông báo mặc định của iOS cho ứng dụng của bạn. Nếu bạn muốn sử dụng một âm thanh tùy biến, thì bạn sẽ cần phải sử dụng tên của tập tin âm thanh của bạn.
  • Một mảng desiredKeys với một giá trị đơn. Với mỗi khóa bạn bao gồm trong mảng này, CloudKit sẽ nạp giá trị tương ứng từ record kích hoạt thông báo và bao gồm nó trong từ điển thông tin người dùng của thông báo.

Hơn nữa, chúng ta chỉ định thông tin thông báo đến subscription, sau đó lưu vào public data của CloudKit cho ứng dụng của bạn.

Do đó bạn có thể thấy thông báo khi ứng dụng đang chạy, thêm phương thức sau đây vào lớp AppDelegate:

Đoạn code này sử dụng framework UserNotifications để hiển thị thông báo của bạn nếu như ứng dụng của bạn hoàn toàn chưa được chạy.

Trước khi chạy ứng dụng của bạn, bạn sẽ cần phải kiểm tra điện thoại có đăng nhập vào tài khoản iCloud hay chưa bằng cách đi tới Settings. Nếu không, bạn sẽ cần phải làm như vậy bởi vì CloudKit API yêu cầu người dùng hiện tại phải đăng nhập.

Build và chạy ứng dụng của bạn từ Xcode và chấp nhận yêu cầu của ứng dụng để hiển thị thông báo. Một khi bạn đã làm điều đó, hãy quay trở lại dashboard của CloudKit cho ứng dụng của bạn và nhấp vào Subscription Types ở bên trái. Bạn sẽ thấy một subscription mới cho các record GlobalNotification với một trigger INSERT:

Subscription Type

4. Gửi một thông báo

Bây giờ, tất cả những gì còn lại phải làm là gửi một thông báo! Vẫn trong Dashboard của CloudKit, nhấp vào Default Zone ở dưới Public Data ở bên trái. Nhấp vào dấu + hoặc New Record để tạo ra một record GlobalNotification mới. Điền vào content với bất cứ điều gì bạn muốn và nhấp vào Save ở góc dưới bên phải.

Sau khi record của bạn đã được lưu, bạn sẽ thấy thông báo xuất hiện ngay lập tức trên thiết bị thử nghiệm của bạn:

Notification

Tóm tắt

Như bạn đã thấy, bạn có thể dễ dàng cài đặt các thông báo đẩy cho ứng dụng iOS của bạn bằng cách sử dụng CloudKit. Thiết lập là rất đơn giản, với chỉ một số ít các bước, và cho phép API thực hiện thông báo đẩy mà bạn có thể cần cho các ứng dụng của bạn.

Như mọi khi, hãy để lại ý kiến và phản hồi của bạn trong phần bình luận dưới đây nhé. Và kiểm tra một số khóa học iOS và hướng dẫn khác!

  • Có gì mới trong iOS 10

  • Tạo SiriKit Extension trong iOS 10

  • iOS 10: Notification Service Extension

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.