Làm cách nào một ứng dụng web có thể gửi thông báo đẩy đến thiết bị iOS? [đóng cửa]


121

Tôi đang làm việc trên một ứng dụng web. Làm cách nào để gửi thông báo đẩy cho người dùng iOS khi có nội dung mới?


Một thông báo nào bây giờ?


Bạn đang tìm kiếm bằng âm thanh? Sau đó, nếu bạn muốn một thông báo âm thanh trong khi điện thoại di động bị khóa chế độ; tên của nó là Đẩy cụ thể.
mrbengi

Câu trả lời:


93

Cụ thể hơn, để ứng dụng web gửi thông báo đẩy đến thiết bị di động, chẳng hạn như iPhone, thiết bị di động phải đăng ký nhận thông báo đẩy cho một ứng dụng cụ thể. Việc đăng ký thông báo đẩy được thực hiện thông qua ứng dụng gốc và chỉ có thể được thực hiện thông qua ứng dụng gốc. Sau khi ứng dụng gốc được đăng ký cho thông báo đẩy, nó có thể gửi mã ủy quyền đến máy chủ, có thể được sử dụng cùng với chứng chỉ được sử dụng để cung cấp cho ứng dụng gốc, để gửi thông báo đẩy đến thiết bị di động.

Như được chỉ định trong một câu trả lời khác, một tùy chọn là 'bọc' ứng dụng web của bạn trong một ứng dụng gốc. Có nghĩa là bạn sẽ tạo một ứng dụng gốc trình bày về cơ bản UIWebView (dành cho nhà phát triển iPhone) cho người dùng hiển thị ứng dụng web của bạn. Mặc dù tính năng này có khá nhiều chức năng giống như trình duyệt gốc, nhưng bạn sẽ có thể thêm khả năng đăng ký thông báo đẩy bằng cách sử dụng các điều khiển gốc.

Sẽ có lợi cho bạn khi xem lại tài liệu thông báo đẩy của Apple vì nó cung cấp một số thông tin khá tốt về cách chức năng nhắn tin đẩy trên iPhone.

Xem các liên kết này do Peter Hosey cung cấp:


Cảm ơn vì câu trả lời này, tôi cũng đang tìm kiếm điều tương tự. Điều này cũng áp dụng khi bạn đã thêm thẻ meta 'apple-mobile-web-app-yet'?
Mark Knol

1
Này đang thay đổi như thế nào thông báo đẩy xảy ra developers.google.com/web/updates/2015/03/...
Daniel Luca CleanUnicorn

1
kể từ tháng 2 năm 2016, FF, Chrome và Safari có thể đăng ký đẩy từ ứng dụng web.
Yvon Huynh

9
Điều này không còn đúng vào năm 2016, bạn có thể gửi thông báo từ các ứng dụng web. Đọc câu trả lời của tôi dưới đây.
collimarco

Nhưng chế độ xem web không hoạt động tốt, nó thiếu một số tính năng và có nhiều lỗi hơn safari
Black

46

Không, chỉ các ứng dụng iOS gốc mới hỗ trợ thông báo đẩy.

CẬP NHẬT: Các
trang web Mac OS X 10.9 & Safari 7 hiện cũng có thể gửi thông báo đẩy, nhưng điều này vẫn không áp dụng cho iOS. Đọc Hướng dẫn Lập trình Thông báo cho Trang web . Ngoài ra, hãy xem WWDC 2013 Phiên 614 .


1
bây giờ bạn có thể trên Maverix & Safari 7!
themihai


Safari 7 chắc chắn có thể nhận được các thông báo đẩy này và tùy thuộc vào ứng dụng web của bạn đang chạy phần phụ trợ nào, có một số dịch vụ cho phép điều này: pushwoosh.com , pushmonkey.launchrock.com hoặc bạn có thể triển khai máy chủ của riêng mình, tương tự như Thông báo đẩy iOS.
Tudor

Tôi nghe nói rằng điều này được gọi là Đẩy mạnh cụ thể.
mrbengi

3
Câu hỏi OP đặc biệt là về iOS. Hỗ trợ OSX / macOS cho điều này là tốt, nhưng thông báo đẩy vẫn chỉ hoạt động trên iOS từ một ứng dụng gốc.
squarecandy

44

Mặc dù chưa được hỗ trợ trên iOS (kể từ iOS 10), các trang web có thể gửi thông báo đẩy tới Firefox và Chrome (Máy tính để bàn / Android) bằng API đẩy .

API đẩy được sử dụng cùng với Thông báo web cũ hơn để hiển thị thông báo. Ưu điểm là API Push cho phép gửi thông báo ngay cả khi người dùng không lướt trang web của bạn, vì chúng được xây dựng dựa trên Service worker (các tập lệnh được đăng ký bởi trình duyệt và có thể được thực thi ở chế độ nền sau đó kể cả sau người dùng của bạn đã rời khỏi trang web của bạn).

Quá trình gửi thông báo bao gồm những việc sau:

  1. người dùng truy cập trang web của bạn (phải được bảo mật qua HTTPS): bạn yêu cầu quyền hiển thị thông báo đẩy và bạn đăng ký nhân viên dịch vụ (một tập lệnh sẽ được thực thi khi nhận được thông báo đẩy)
  2. nếu người dùng đã cấp quyền, bạn có thể đọc mã thông báo thiết bị (điểm cuối) sẽ được gửi đến máy chủ và được lưu trữ
  3. bây giờ bạn có thể gửi thông báo cho người dùng: máy chủ của bạn thực hiện một yêu cầu HTTP POST tới điểm cuối (là một URL chứa mã thông báo thiết bị). Máy chủ nhận yêu cầu thuộc sở hữu của nhà sản xuất trình duyệt (ví dụ: Google, Mozilla): trình duyệt được kết nối liên tục với nó và có thể đọc các thông báo đến.
  4. khi trình duyệt của người dùng nhận được thông báo, nhân viên dịch vụ sẽ thực thi dịch vụ, chịu trách nhiệm quản lý sự kiện, truy xuất dữ liệu thông báo từ máy chủ và hiển thị thông báo cho người dùng

Push API hiện được hỗ trợ trên máy tính để bàn và Android của Chrome , FirefoxOpera .

Bạn cũng có thể gửi thông báo đẩy tới màn hình Apple / Safari bằng APN. Cách tiếp cận tương tự, nhưng có nhiều phức tạp (chứng chỉ nhà phát triển apple, gói đẩy, kết nối TCP mức thấp với APN).

Nếu bạn muốn tự triển khai thông báo đẩy, hãy bắt đầu với các hướng dẫn sau:

Nếu bạn đang tìm kiếm một giải pháp giảm thiểu , tôi sẽ đề xuất Pushpad , đây là một dịch vụ mà tôi đã xây dựng.

Cập nhật (tháng 9 năm 2017): Apple đã bắt đầu phát triển các nhân viên dịch vụ cho WebKit ( trạng thái ). Vì service worker là công nghệ nền tảng cho web push, nên đây là một bước tiến lớn.


3
Kể từ iOS 10 (beta công khai), Mobile Safari không hỗ trợ thông báo đẩy.
Robin Daugherty

1
Đó không phải là sự chỉnh sửa câu trả lời của bạn, tôi đang cung cấp thông tin cho những người đang tìm kiếm hỗ trợ của Safari Mobile. Một ngày nào đó có lẽ họ sẽ hỗ trợ thông báo đẩy, nhưng chúng không hỗ trợ như bản phát hành mà tôi đã đề cập.
Robin Daugherty

14
Safari là Internet Explorer mới. Apple là Microsoft mới. Ugh ....
Costa

1
@Kevincore Không, rất tiếc là không có bất kỳ bản cập nhật nào. Safari trên iOS hiện không hỗ trợ đẩy web (tháng 5 năm 2017).
collimarco

1
Hãy tạo áp lực lên Apple: Tôi đã viết một số đoạn văn mà bạn có thể sao chép và gửi cho Apple Bug Tracker để yêu cầu Apple thêm web push vào iOS.
collimarco



9

THỰC TẾ .. Đây là thương hiệu hoàn toàn mới khiến bạn nhớ .. Trên phiên bản OS X (Mavericks) mới nhất, bạn CÓ THỂ gửi thông báo đẩy từ một trang web tới màn hình. Nhưng theo tài liệu, KHÔNG phải iPhone:

Note: This document pertains to OS X only. Notifications for websites do not appear on iOS.

Hiện tại Apple có kế hoạch cho phép 2 loại thông báo đẩy: Thông báo đẩy trên trang web OS X và Thông báo cục bộ.

Rào cản rõ ràng ở đây là tính năng này sẽ không hoạt động trên PC, cũng như không cho phép bạn thực hiện thông báo đẩy android.

Hơn nữa, bạn thực sự có thể với các phiên bản cũ như Snow Leapord, gửi thông báo đẩy từ một trang web miễn là trang web đó đang mở và hoạt động. Hệ điều hành Mavericks mới sẽ cho phép thông báo đẩy ngay cả khi trang web không được mở, giả sử bạn đã cấp quyền cho trang web đó để gửi thông báo đẩy.

Từ miệng của Apple:

Trong OS X v10.9 trở lên, bạn có thể gửi Thông báo đẩy trang web OS X từ máy chủ web của mình trực tiếp tới người dùng OS X bằng cách sử dụng dịch vụ Thông báo đẩy của Apple (APN). Đừng nhầm lẫn với thông báo cục bộ, thông báo đẩy có thể đến với người dùng của bạn bất kể trang web của bạn hay trình duyệt web của họ đang mở…

Để tích hợp thông báo đẩy vào trang web của bạn, trước tiên bạn phải trình bày một giao diện cho phép người dùng chọn nhận thông báo. Nếu người dùng đồng ý, Safari sẽ liên hệ với trang web của bạn để yêu cầu thông tin đăng nhập của nó dưới dạng tệp được gọi là gói đẩy. Gói đẩy cũng chứa nội dung thông báo được sử dụng trong suốt OS X và dữ liệu được sử dụng để giao tiếp với dịch vụ web mà bạn định cấu hình. Nếu gói đẩy hợp lệ, bạn sẽ nhận được một số nhận dạng duy nhất cho người dùng trên thiết bị được gọi là mã thông báo thiết bị. Người dùng nhận được thông báo khi bạn gửi kết hợp mã thông báo thiết bị này và tin nhắn của bạn hoặc tải trọng, tới APN.

Khi nhận được thông báo, người dùng có thể nhấp vào thông báo đó để mở trang web mà bạn chọn trong trình duyệt mặc định của người dùng.

Lưu ý: Nếu bạn cần cập nhật lại APN, hãy đọc chương “Dịch vụ thông báo đẩy của Apple” trong Hướng dẫn lập trình thông báo đẩy và cục bộ. Mặc dù tài liệu dành riêng cho thông báo đẩy của iOS và OS X, các mô hình của dịch vụ thông báo đẩy vẫn được áp dụng.


5
Điều này hy vọng có nghĩa là chúng ta sẽ thấy thông báo đẩy dựa trên web của iOS 8 hoặc 9. Giữ ngón tay của tôi bắt chéo.
Travis

5
Các tài liệu dành cho nhà phát triển nói rõ ràng rằng thông báo web hiện không áp dụng cho iOS. Chỉ như một sự làm rõ của đoạn đầu tiên của bạn.
Daniel Sellers

1
Biết táo họ sẽ cho phép nó cho một phiên bản của iOS và loại bỏ nó cho tới
Alexander Derck

6

Không, không có cách nào để ứng dụng web nhận được thông báo đẩy. Những gì bạn có thể làm là gói ứng dụng web của mình thành một ứng dụng gốc có thông báo đẩy.


ý bạn là gì khi bạn nói "kết hợp ứng dụng web của bạn thành một ứng dụng gốc"?
Frankie,

1
Frankie: Chà, chỉ là một ứng dụng gốc hiển thị UIWebView, sau đó sẽ tải trang web của bạn. Điều đó cho phép bạn có ứng dụng web của mình dưới dạng ứng dụng gốc trên điện thoại.
JustSid

vì vậy tôi đoán trong xcode đây sẽ là "Ứng dụng WindowBase" cho ứng dụng gốc, phải không?
Frankie

bây giờ bạn có thể trên Maverix & Safari 7!
themihai

1
@DanDascalescu Tại sao tôi lại làm vậy? Nó vẫn không thể trên iOS, đó là những gì câu hỏi đặt ra. Câu trả lời là không sai.
JustSid

2

W3C bắt đầu vào năm 2010 một nhóm làm việc để triển khai các thông báo:
http://www.w3.org/2010/web-notifications/

Nhóm công tác này phát triển các API để hiển thị các cơ chế đó cho các Ứng dụng Web — để các nhà phát triển Web đang tạo, ví dụ, ứng dụng khách e-mail dựa trên Web và ứng dụng nhắn tin tức thời có thể tích hợp chặt chẽ hơn hành vi ứng dụng Web của họ với các tính năng thông báo của hệ điều hành của người dùng cuối của họ.

Cuối cùng, kết quả giống như một trò đùa dở khóc dở cười vì nó chỉ hoạt động nếu trang web cụ thể được mở: http://alxgbsn.co.uk/notify.js/

Tôi nghĩ rằng họ đã bỏ lỡ việc triển khai khả năng thêm url đẩy để trình duyệt có thể yêu cầu thông báo trong khi nó đang chạy ở chế độ nền - và trên hết - nếu tất cả các tab đã bị đóng.


2

Bạn có thể sử dụng HTML5 Websockets để giới thiệu thông điệp đẩy của riêng bạn. Từ Wikipedia :

"Đối với phía máy khách, WebSocket sẽ được triển khai trong Firefox 4, Google Chrome 4, Opera 11 và Safari 5, cũng như phiên bản di động của Safari trong iOS 4.2. Ngoài ra, Trình duyệt BlackBerry trong OS7 cũng hỗ trợ WebSockets."

Để làm điều này, bạn cần máy chủ của nhà cung cấp riêng của mình để đẩy các thông báo đến các máy khách.
Nếu bạn muốn sử dụng APN (Thông báo đẩy của Apple) hoặc C2DM (Thông báo từ đám mây tới thiết bị), bạn phải có một ứng dụng gốc phải được tải xuống thông qua cửa hàng trực tuyến.


6
tốt, nó sẽ chỉ hoạt động nếu trình duyệt được mở và trong trang ứng dụng web. không giống như thông báo đẩy, hoạt động ngay cả khi yêu cầu bị tắt.
Hagai L

2

Pushbullet là một sự thay thế tuyệt vời cho việc này.

Tuy nhiên, người dùng cần phải có tài khoản Pushbullet và cài đặt ứng dụng (iOS, Android) hoặc cài đặt plugin (Chrome, Opera, Firefox và Windows).

Bạn có thể sử dụng API bằng cách tạo ứng dụng Pushbullet và kết nối người dùng ứng dụng của bạn với người dùng Pushbullet bằng oAuth2.

Sử dụng thư viện sẽ dễ dàng hơn nhiều, đối với PHP, tôi có thể giới thiệu ivkos / Pushbullet-for-PHP .


1

Kiểm tra thông báo đẩy trên web Xtify. http://getreactor.xtify.com/ Công cụ này cho phép bạn đẩy nội dung lên trang web và nhắm mục tiêu khách truy cập cũng như kích hoạt thông báo dựa trên các sự kiện DOM của trình duyệt. Nó được thiết kế dành riêng cho thiết bị di động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.