5

Khi iPhone của bạn nhận được thông báo đẩy WhatsApp/Telegram, ví dụ:Tôi có nên cập nhật ứng dụng của mình khi nhận được tải trọng không? Hoặc tôi nên luôn luôn cập nhật nó bằng cách cho phép nó để tải về cho chính nó?

wife: 
"buy pizza" 

Question1: Là nó mà ứng dụng có tải/nhận rằng tự. Đó là biểu ngữ bật lên trên điện thoại phải tải xuống cho chính nó + Whatsapp/Telegram của tôi phải tải xuống lại cho chính nó?

Bạn tôi trả lời:

thông báo đẩy có thể có được thông báo là một tải trọng. Ứng dụng của bạn có thể trích xuất và chèn động vào cuộc trò chuyện mà không cần yêu cầu bổ sung - Tôi đã thực hiện điều đó trước đây. Làm cho nó cảm thấy nhiều snappier. Nhược điểm là bạn không được đảm bảo rằng việc đẩy sẽ đến đúng thứ tự (hoặc tất cả).

Nhưng tôi không bị thuyết phục, từ quan điểm ngữ nghĩa, thông báo đẩy không được thực sự tự động tự cập nhật ứng dụng của bạn. Nó sẽ là một lạm dụng nếu họ làm ... Họ chỉ nên thông báo cho ứng dụng cập nhật của bạn và sau đó cho phép bạn tự cập nhật thông qua việc tải xuống bất kỳ nội dung mới nào đã được cung cấp.

Vì vậy, để xem nếu công ty hàng đầu và các ứng dụng của họ đang áp dụng những gì bạn bè của tôi đề nghị tôi đã làm một thí nghiệm nhỏ với 3 ứng dụng (Gmail, WhatsApp, Telegram):

Tôi tắt Wifi, nhưng vẫn giữ dữ liệu di động trên , sau đó tôi cũng đã vô hiệu hóa quyền truy cập của ứng dụng từ việc sử dụng dữ liệu Di động.

enter image description here

Sau đó, tôi có một người nào đó gửi cho tôi một tin nhắn/email: Dưới đây là kết quả của tôi:

Telegram:: Tôi nhận được thông báo (có người gửi + dòng đầu tiên). Nhưng khi tôi mở ứng dụng (hoặc nhấn vào thông báo), ứng dụng không có tin nhắn mới của tôi hoặc bất kỳ thứ gì.

Tuy nhiên, nếu Telegram được phép truy cập internet ... nó sẽ tải xuống thư trong nền ... đó là nếu tôi làm theo yêu cầu trình tự: Tôi là wifi hoặc dữ liệu di động không bị hạn chế internet -> nhận một thông báo -> tắt internet hoàn toàn nhưng sau đó đi đến ứng dụng: Tôi sẽ thấy toàn bộ thông điệp/cơ thể ở đó.

Gmail: Tôi nhận được thông báo (có bản xem trước chủ đề/người gửi/nội dung) Nhưng khi tôi mở ứng dụng, ứng dụng không có tin nhắn mới hoặc bất kỳ điều gì.

Nếu ứng dụng Gmail được phép truy cập internet… thì ngược lại với Telegram: không chỉ cho đến khi mở ứng dụng, nó sẽ tải xuống/cập nhật email trong Gmail. Tôi đoán Gmail không có content-available thiết lập để 1 nhưng Telegram có nó thiết lập để 1

WhatsApp: Tôi không nhận được bất cứ điều gì.

KHÔNG tương tác xảy ra khi nhận được thông báo… Điều này chỉ xảy ra nếu ứng dụng đang tải xuống chính nó.

Kết luận của tôi là:

NO tương tác xảy ra khi nhận được thông báo ... Nó chỉ xảy ra nếu ứng dụng được tải tự độc lập với sự xuất hiện tải trọng.

Gmail và Telegram đang tải xuống dự phòng và về cơ bản không đủ thông minh cho những gì bạn tôi đề xuất HOẶC nguy cơ không nhận được email/tin nhắn quá nhiều và tốt hơn là ở bên an toàn: think_face:

Câu hỏi2: Kết luận đó có đúng không?

+0

Tôi không thực sự hài lòng với câu trả lời được chấp nhận: (.Được cung cấp tiền thưởng anyways. Đối với một câu trả lời thay thế xem [ở đây] (https://stackoverflow.com/a/26302815/5175709) Hãy chắc chắn để đọc qua các ý kiến ​​ – Honey

Trả lời

4

Trước tiên, tải xuống tải trọng thường không phải là vấn đề. Tôi tưởng tượng rằng tải trọng thường rất nhỏ (có lẽ là < 1Kb đối với tin nhắn văn bản ngắn). Trong thực tế, kích thước tối đa cho một tải trọng từ xa thông thường là 4KB (5KB cho các thông báo VoIP). Xem Creating the Remote Notification Payload.

Thứ hai, rất khó để ứng dụng của bạn truy cập mọi dữ liệu thông báo từ xa. Cách duy nhất có thể là thông qua Thông báo im lặng, không được khuyến nghị cho các thông báo văn bản đơn giản. Một thông báo im lặng sẽ đánh thức ứng dụng của bạn và đưa ra 30 giây để thực hiện các thao tác trong nền trước khi nó bị tắt một lần nữa. Bạn có thể gửi thông báo im lặng từ xa khiến ứng dụng của bạn kích hoạt thông báo cục bộ thông thường dựa trên thông báo từ xa đó (hoặc gửi cả thông báo từ xa và thông thường), nhưng một lần nữa, việc sử dụng Thông báo im lặng như vậy không được khuyến nghị:

Thông báo im lặng không có nghĩa là cách giữ cho ứng dụng của bạn ở chế độ nền và cũng không có nghĩa là chúng sẽ cập nhật mức độ ưu tiên cao. APN xử lý thông báo im lặng là mức độ ưu tiên thấp và có thể điều tiết hoàn toàn việc phân phối của chúng nếu tổng số trở nên quá mức. Giới hạn thực tế là động và có thể thay đổi dựa trên điều kiện, nhưng cố gắng không gửi nhiều hơn một vài thông báo mỗi giờ.

Xem Configuring a Silent Notification để biết thêm thông tin.

Một cách khác có thể là các ứng dụng có thể "tải xuống" thông báo từ xa khi chúng được nhận được mô tả trong Modifying the Payload of a Remote Notification. Bạn chỉ cần lưu các thông báo và chọn không sửa đổi chúng.

Không có câu trả lời có/không phổ dụng hoạt động cho tất cả ứng dụng đối với một trong các câu hỏi của bạn. Thay vào đó, có một số cách khác nhau mà ứng dụng có thể nhận thông báo từ xa và xử lý dữ liệu của chúng.

EDIT: Bạn cũng nên triển khai application(_:didReceiveRemoteNotification:fetchCompletionHandler:) và truy xuất/lưu dữ liệu từ thông tin người dùng của thông báo để dữ liệu có sẵn nhanh hơn trong ứng dụng của bạn. Tuy nhiên, phương pháp đó không đảm bảo được gọi. Vì vậy, bạn có thể/nên thực hiện nó, nhưng quan trọng hơn, có ứng dụng của bạn kiểm tra dữ liệu mới từ máy chủ của riêng bạn để không có gì bị bỏ qua.

+0

Không có câu trả lời phổ quát? OK ... Hãy để tôi thực hiện điều này rất cụ thể.Về tiết kiệm pin và không tải xuống lại những thứ + độ tin cậy, phương pháp tiếp cận chính xác cho các ứng dụng như WhatsApp, Telegram là gì? – Honey

+0

Đối với đề xuất sửa đổi của bạn, không chắc chắn lý do tại sao tôi phải đi xuống tuyến đường đó. 'Application (_: didReceiveRemoteNotification: fetchCompletionHandler:)' được sử dụng cho cái gì sau đó? Điều đó có được kích hoạt khi nhận được thông báo không? – Honey

+0

Bạn có thể thực hiện phương thức đó và yêu cầu truy xuất/lưu thông tin người dùng từ thông báo (mà tôi khuyên bạn nên làm), nhưng có một sự bắt giữ: phương pháp đó không được đảm bảo để được gọi. Xem [tại đây] (https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623013-application). Phương pháp đó chỉ có nghĩa là làm cho thông báo/thông báo mới khả dụng * nhanh hơn * trong ứng dụng. Tuy nhiên, ứng dụng của bạn cũng nên kiểm tra máy chủ của mình để có dữ liệu mới. – Coder256

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