2017-07-10 12 views
8

Tôi có một dịch vụ nhắn tin mà tôi sử dụng cho các thông báo đẩy thông thường. Ví dụ: khi một người dùng gửi tin nhắn, người dùng khác sẽ nhận được thông báo đẩy với thông báo đó. Tôi đã nhận thấy nếu điện thoại đang ở trên wifi và 3g/4g và ứng dụng bị giết (và màn hình bị khóa), thông báo sẽ được nhận. Nếu thiết bị chỉ trên wifi và ứng dụng bị giết (và màn hình bị khóa), thông báo sẽ không được nhận.Sự khác biệt giữa push voip và push thông thường khi đánh thức ứng dụng từ nền

Giả định của tôi là để tiết kiệm pin, thiết bị sẽ ngắt kết nối khỏi wifi sau một thời gian nhất định và đó là lý do tại sao thông báo đẩy không được nhận.

Nhưng khi tôi sử dụng thông báo đẩy VOIP, tình huống sẽ khác. Ngay cả khi ứng dụng bị giết và thiết bị đang bật wifi (và màn hình bị khóa), thông báo sẽ được nhận. Vì vậy, điều này có nghĩa là gì? Làm thế nào là điện thoại nhận được thông báo này, nếu nó ngắt kết nối từ wifi?

Tôi thiếu gì ở đây?

+0

Tôi không nghĩ rằng wifi bị ngắt kết nối hoàn toàn khi thiết bị iOS của bạn ở chế độ ngủ. Chip Wifi trên iOS có thể theo dõi Wake on Wireless LAN vv Lý do Voip Push luôn được phân phối là vì VOIP được đảm bảo theo cách đó, thời gian thực! Tất cả các push không voip khác bao gồm các thông báo im lặng không đáng tin cậy và iOS có thể thả chúng một cách có chọn lọc để tiết kiệm pin ở chế độ ngủ. – Ayush

Trả lời

1

Bạn gần như chính xác trong điều này - đây là cách thức hoạt động của voIP. Trích từ Apple Docs:

Trong quá khứ, một ứng dụng VoIP phải duy trì một kết nối liên tục mạng với một máy chủ để nhận cuộc gọi đến và các dữ liệu khác. Điều này có nghĩa là viết mã phức tạp gửi lại các tin nhắn định kỳ và giữa ứng dụng và máy chủ để giữ kết nối còn sống, thậm chí khi ứng dụng không được sử dụng. Kỹ thuật này dẫn đến thiết bị thường xuyên đánh thức năng lượng lãng phí đó. Điều này cũng có nghĩa là nếu người dùng thoát ứng dụng VoIP , các cuộc gọi từ máy chủ sẽ không thể nhận được nữa.

Thay vì kết nối liên tục, nhà phát triển nên sử dụng khung công tác PushKit — API cho phép ứng dụng nhận đẩy (thông báo khi dữ liệu khả dụng) từ máy chủ từ xa. Bất cứ khi nào đẩy được nhận được, ứng dụng được gọi để hành động. Ví dụ: ứng dụng VoIP có thể hiển thị cảnh báo khi nhận cuộc gọi và cung cấp tùy chọn để chấp nhận hoặc từ chối cuộc gọi. Nó thậm chí có thể bắt đầu thực hiện các bước tiền tố để bắt đầu cuộc gọi, trong trường hợp người dùng quyết định chấp nhận.

1

Bên cạnh đó, để thêm vào câu trả lời Sivajee Battina, đây là những gì bạn có thể đọc trong guidelines:

Có rất nhiều lợi thế để sử dụng PushKit nhận VoIP đẩy:

  • Các thiết bị chỉ được đánh thức khi việc đẩy VoIP xảy ra, tiết kiệm năng lượng.
  • Không giống như thông báo đẩy tiêu chuẩn mà người dùng phải trả lời trước ứng dụng của bạn có thể thực hiện một hành động, việc chuyển VoIP sẽ chuyển thẳng đến ứng dụng của bạn để xử lý.
  • Đẩy VoIP được coi là thông báo ưu tiên cao và được gửi không chậm trễ.

  • Tính năng đẩy VoIP có thể bao gồm nhiều dữ liệu hơn so với thông tin được cung cấp với thông báo đẩy tiêu chuẩn.

  • Ứng dụng của bạn sẽ tự động khởi chạy lại nếu ứng dụng không chạy khi nhận được push VoIP.

  • Ứng dụng của bạn được cung cấp thời gian chạy để xử lý sự cố, ngay cả khi ứng dụng của bạn đang hoạt động ở chế độ nền.

Vì vậy, điểm thứ ba xác nhận rằng các thông báo đẩy tiêu chuẩn của bạn có thể bị trì hoãn trong một số trường hợp, trong khi thông báo đẩy VoIP sẽ luôn được phân phối một cách kịp thời.

Ngoài ra, hãy xem điều này question vì lý do tại sao thông báo đẩy tiêu chuẩn bị trì hoãn hoặc bị xóa.

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