Tiện dụng, tuyệt vời hơn khi sử dụng OneSignal thay Firebase trong `Push Notification`

Tác giả đã dùng thử OneSignal- một service Push Notification được Y Combinator đầu tư và đang phát triển cực kỳ nhanh chóng. Cũng miễn phí giống như Firebase, nhưng OneSignal lại có tính mềm dẻo linh hoạt như Parse (A/B Test, Tự động gửi tin, User Property ...) Vướng mắc của Firebase (Property bị hạn chế , không thể xoá, không import được token từ các ASP khác) đều không vấn đề gì, cảm xúc như lần đầu khi sử dụng Parse vậy.

Vấn đề của Firebase

Thời đại hậu Parse thì Firebase chính là điểm nhấn nổi bật nhất khi được Up Version và phát biểu tại sự kiện Google I/O 2016. Đương nhiên có ông lớn Google là xương sống thì hẳn sẽ áp đảo vượt trội rồi. Tuy nhiên khi sử dụng thử thì đã có những thứ ngoài mong đợi, mà chi tiết đã được bài viết này nêu ra luận điểm. Một số điểm trừ có thể lưu ý đến đó là:

  • Chỉ đăng ký được tối đa 25 trường tự động thu thập (tuổi, giới tính, thông tin đầu cuối ...) của user property. Và không thể xoá được
  • Segment không được update
  • Data phản ứng chậm
  • Không thể import token từ ASP khác

OneSignal thì sao?

  • Là một ASP Push Notification được Y Combinator đầu tư và đang phát triển cực kỳ nhanh chóng
  • Uber, Line, Zynga, ProductHunt ... với khoảng hơn 220000 người dùng đang sử dụng thực tế
  • iOS, Android, Web Push, Unity ... đều support. Gần đây đã support cả Amazon Alexa
  • Miễn phí. Giống với quảng cáo, mô hình thu lợi ích từ việc sử dung dữ liệu. Và cũng có cả Plan tính phí có support
  • Giống với Parse, Có Service gửi Push + User DB. Nên có thể dễ dàng nhìn được User DB
  • Có thể đăng ký vô hạn User Property
  • Service Delivery Rust đang được viết
  • Có tính năng gửi 5000 Push trên giây. Hiện tại tốc độ vẫn đang được cải thiện tiếp.

So sánh tính năng và đặc trưng với Firebase

Dưới đây là bảng so sánh đại khái sự khác nhau với Firebase. Nếu các bạn phát hiện ra có chỗ nào cần chỉnh sửa xin hãy liên hệ góp ý với mình ạ (bow)

OneSignal Firebase
Price Free Free
API
Tính năng import token
RealTime Unpacking △ (ko realtime thì phải)
Đặt lịch gửi
Support Device Timezone
Định kỳ gửi tin △(sử dụng API)
Segment Delivery △ (bị vấn đề segment không thể update)
A/B Test △ (Sử dụng segment)
List User
User Property ○ (vô hạn) △ (giới hạn cá nhân chỉ được tối đa 25, không thể xoá được)
Agree Gate Data ○ (Có thể nhìn đc over all user là một điểm mạnh)
Gửi đa ngôn ngữ △ (Sử dụng segment)
iOS10(media delivery, sub title) ○ (form chuyên dụng) ○ (chỉ định custom data)
message template
emoji input helper
Đăng ký device tester ☓ (phải phân rõ app chính thức và app phát triển)

Sử dụng thử (phần user data)

Và ta bắt đầu thử trên iOS

Thực nghiệm 1. Đăng ký user

Nói là đăng ký nhưng sau khi đưa SDK vào và khởi động app thì user được tự động đăng ký. Giống như Parse trạng thái đăng ký của user có thể nắm bắt một cách dễ hiểu.

Thực nghiệm 2. Đăng ký user property (Tags)

Firebase's user property = OneSignal's Data Tags (Tags). Ta đăng ký KeyValue Data ở Tags. Ở Firebase user property cá nhân chỉ đăng ký được tối đa 25 mục nhưng ở Tags thì có thể đăng ký vô hạn. Nói vậy cũng có nghĩa là ví dụ như nếu user là trên 3 triệu, thì setting tag trên 20 cái sẽ gây ảnh hưởng đến việc gửi notification và không recommend nhé. Ở đây với mục đích test, mình đã thử đăng ký tag có 100 mục

var tags: [String: Int] = [:]
for i in (1...100) {
    tags["tag" + String(i)] = i
}
OneSignal.sendTags(tags)

Kết quả

Đã đăng ký tag 100 vào tags. Ngay lập tức được update và ta có thể nhìn thấy ngay rất là phấn khích :slight_smile:

Thực nghiệm 3. Update Tag

Ta chỉ thử update một phần của tags. Ví dụ như chỉ update tag1 thôi

OneSignal.sendTag("tag1", value: "foobar")

Kết quả

Cũng như trên, ngay lập tức đã thay đổi như hình dưới

Sử dụng thử phần Push

tự động push phân đoạn (segment)

Tính năng mà những user thoả mãn điều kiện segment sẽ được gửi push Ví dụ như free user khi trở thành paid user thì sẽ sử dụng tính năng này

1. Đăng ký Segment

Ví dụ ta đăng ký Segment paid user. Ta setting điều kiện của paid user đó là 'subscription' tag cần có giá trị là 1

2. Đăng ký Template

Đăng ký template message hướng đến paid user ^^ Thêm title, message, rất ngon là có cả thêm Subtitle form cho iOS10 Emoji helper cũng có rất là tiện lợi

3. Thực hiện với paid user

Sau khi sử dụng Template, Segment để đăng ký message tự động, ngay lập tức push sẽ thực hiện đến paid users. Sau thời gian đăng ký đó, mỗi 30 phút lại check user có match với điều kiện của segment không. Nếu match sẽ gửi Push đến các user đó. Ngoài ra thì default hệ thống sẽ setting chỉ gửi message tự động đến user một lần thôi.

Tham khảo: Qiita