2013-09-25 29 views
5

Ứng dụng của tôi đang nhận các APN được gửi từ máy chủ đến chương trình phụ trợ của Apple. Đương nhiên, người dùng có thể không mở ứng dụng khi thông báo đến thiết bị của người dùng. Trong khi chờ đợi, máy chủ của tôi có thể đẩy thêm thông báo. Tất cả đều chứa một số dữ liệu người dùng quan trọng khi thông báo được xử lý. Vậy làm thế nào để đối phó với nó? iOS sẽ không gói và gửi cho tôi một đợt, phải không?Cách xử lý nhiều thông báo đẩy với dữ liệu người dùng đến vào các thời điểm khác nhau?

Dưới đây là những cách tôi sẽ giải quyết nó, không cái nào đơn giản.

  1. Máy chủ theo dõi dữ liệu không nhìn thấy và khi đến một yêu cầu mới luôn gửi một loạt tất cả thông báo mới, phản ánh số lượng là số lượng huy hiệu.
  2. Khách hàng được mở bằng cách chạm vào cửa sổ bật lên thông báo. Trong trường hợp này, nó có tất cả dữ liệu cần thiết trong didReceiveRemoteNotification. HOẶC
  3. Khách hàng bỏ qua cửa sổ thông báo và mở ứng dụng (có thể sau này) bằng cách nhấn vào biểu tượng ứng dụng. Trong trường hợp này, didReceiveRemoteNotification không được gọi và do đó ứng dụng phải tìm nạp tất cả dữ liệu cần thiết từ máy chủ. HOẶC
  4. Máy chủ không bao giờ gửi bất kỳ dữ liệu người dùng nào và khách hàng luôn kiểm tra nội dung mới mỗi lần khởi động hoặc tìm nạp dữ liệu trong didReceiveRemoteNotification.

Còn gì khác không? Một cái gì đó đơn giản hơn tôi đang mất tích?

+0

@Virussmca Tôi đặt cược nhiều người đối phó với APN. Tôi hy vọng một người nào đó đối phó với điều đó một cách độc đáo vì điều đó. Các tùy chọn được trình bày tạo ra sự hối hả hơn nhưng tôi e rằng tôi phải đối phó với chúng. Cũng có vẻ như nhiều điểm vào ứng dụng của UIApplication phải được xem xét. – Schultz9999

Trả lời

1

Số 4 là phương pháp phù hợp. Không có gì đảm bảo rằng bất kỳ mã ứng dụng nào của bạn sẽ chạy khi nhận được APN, ngoại trừ trên iOS7. Vì vậy, khi ứng dụng của bạn bắt đầu, nó phải kiểm tra với các máy chủ của bạn cho bất kỳ thông tin mới nào mà nó sẽ hiển thị.

Cách đơn giản nhất để mã này là alway yêu cầu máy chủ của bạn cung cấp thông tin mới nhất để hiển thị, thay vì dựa vào thông tin trong APN. Sử dụng thông tin trong APN chỉ để xác định thông tin mới cần điều hướng đến, để ứng dụng hiển thị bất kỳ thông tin nào người dùng đã nhấn vào.

Điều này đã thay đổi với iOS7, nơi bạn có thể sử dụng chế độ nền remote-notification để khởi chạy bất cứ khi nào thông báo đẩy đến. Xem https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIApplicationDelegate/application:didReceiveRemoteNotification:fetchCompletionHandler:

+0

không phải câu trả lời của bạn cuối cùng đề xuất không bao giờ có 'nội dung có sẵn: 1'. Về cơ bản bạn vừa nói không bao giờ sử dụng thông báo im lặng ... – Honey

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