2015-02-13 11 views
5

Tôi về cơ bản muốn thực hiện nhiều thông báo đẩy trong cùng một ứng dụng hiển thị trong khay thông báo trong iOS.Apple Multiple Push Notifications không hiển thị trong Khay thông báo

Kịch bản này hoạt động nếu dữ liệu của tôi bật khi thông báo đẩy được kích hoạt qua APNS, nhưng chỉ nhận được thông báo mới nhất trong trường hợp tôi ngoại tuyến và quay lại sau một thời gian. Chức năng này được xác nhận bằng tài liệu APNS.

Tuy nhiên, đây là những gì làm việc tại WhatsApp:

  1. Hóa kết nối dữ liệu OFF
  2. Sent một số thông điệp đến WhatsApp
  3. Hóa kết nối dữ liệu ON
  4. Saw nhiều thông báo đẩy nhận được trong Khay Thông báo của Apple

Kịch bản này hoạt động như thế nào? Tôi có thể sử dụng APNS cho điều này không? Nếu có, thì làm thế nào?

Xem this sample image nhiều thông báo đẩy trong WeChat.

Trả lời

5

Giống như bạn đã viết trong câu hỏi của bạn, điều này được đề cập trong Apple Documents:

Nếu bạn đang gửi nhiều thông báo đến các thiết bị tương tự hoặc máy tính trong một khoảng thời gian ngắn, dịch vụ push sẽ gửi chỉ phiên bản cuối cùng.

Link

Các chỉ kịch bản rằng những gì bạn đang mô tả sẽ làm việc là nếu WhatsApp của bạn đã được mở ở chế độ nền trong khi nhận được những push notifications. Bằng cách đó whatsApp sẽ xử lý chúng dưới dạng local notifications và sẽ hiển thị tất cả chúng trong trung tâm thông báo. Nếu whatsApp bị đóng, bạn sẽ chỉ nhận được thông báo cuối cùng giống như bất kỳ ứng dụng nào khác.

Bạn có thể dễ dàng kiểm tra này:

  1. Chấm dứt WhatsApp và bật Airplane mode.
  2. Gửi cho thiết bị của bạn 5 tin nhắn từ 1 đến 5.
  3. Tắt và tắt thiết bị của bạn Airplane mode.
  4. Bạn sẽ chỉ thấy một thông điệp (tin nhắn cuối cùng bạn đã gửi "5") trong số notifications center.

Đây là cách WhatsApp là làm cho nó làm việc:

Trong khi Whatsapp là ở chế độ nền, một thông báo push duy nhất được nhận (người cuối cùng người dùng gửi đi, "5" trong ví dụ của chúng tôi). Thông điệp đó sẽ không được hiển thị cho người dùng.

whatsApp nhận nó theo phương thức application:didReceiveRemoteNotification:fetchCompletionHandler: và kiểm tra máy chủ của họ nếu có bất kỳ thông báo nào trước "5" mà người dùng không nhận được. Nếu đúng như vậy, họ sẽ lấy dữ liệu đó từ máy chủ của họ và sẽ trình bày dữ liệu đó cho người dùng sử dụng local notifications, về cơ bản chỉ là cách trình bày dữ liệu và không liên quan đến APNS.

+0

: Tôi đã thử điều này trên whtsapp bằng cách tắt kết nối dữ liệu và trở lại trực tuyến sau một thời gian (Trong thời gian này nó sẽ không quan trọng nếu whtsapp đã ở chế độ nền) nhưng vẫn nhận được tất cả các thông báo đẩy.Đó có thể không sử dụng apns nhưng sau đó làm thế nào họ đạt được nó đó là những gì tôi cần biết. – Geek

+0

Tôi đã chỉnh sửa câu trả lời để làm cho mọi thứ rõ ràng hơn một chút – Segev

+0

ứng dụng: didReceiveRemoteNotification: fetchCompletionHandler: phương thức này không hoạt động ở trạng thái kết thúc vì vậy làm cách nào để chúng tôi có thể làm điều đó, khi chúng tôi nhận được tin nhắn cuối cùng, sau đó yêu cầu và nhận tin nhắn cuối cùng lần nữa. –

-1

Như được mô tả, bạn không thể kiểm soát các thông báo đẩy đó.

Tuy nhiên bạn có thể biết rằng từ iOS7 một chế độ thực thi nền mới (thông báo từ xa) cho phép Ứng dụng đánh thức hệ thống khi nhận được đẩy, cho phép bạn xử lý một số dữ liệu, sau đó quay lại chế độ ngủ ...

Đây có lẽ là mẹo: sử dụng cách đó để nhận thông báo đẩy (âm thầm) và sau đó kích hoạt thông báo địa phương của riêng bạn thay vì @Segev cho biết. See the UIBackgroundModes here.

Các vấn đề liên quan