Theo tài liệu của Apple, tôi có thể đăng ký thông báo im lặng bằng cách thêm "content-available" = 1
khóa-giá trị trong aps
từ điển tải trọng. Tôi muốn ứng dụng của mình thức dậy dưới nền khi có thông báo im lặng. Tôi đặt App downloads content in response to push notifications
giá trị cho Required background modes
trong info.plist của tôiThông báo đẩy im lặng của Apple có thể khởi chạy ứng dụng của tôi trong nền không?
Đây là từ điển tải trọng của tôi
{"aps":
{
"alert":"Notification alert","badge":1,"sound":"default","content-available":1
}
}
Tôi nhận được callbacks trong -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
trong khi ứng dụng của tôi là ở chế độ nền. Nhưng câu hỏi của tôi là chúng ta có thể gọi lại cho phương thức này hay bất kỳ phương thức nào khác khi ứng dụng của chúng ta ở trạng thái bị giết không?
Tôi không muốn người dùng ứng dụng của mình thấy thông báo nhưng tôi muốn ứng dụng của tôi thực hiện một số tác vụ nhất định bằng cách đánh thức nó trong nền thông qua thông báo im lặng.
Mọi đề xuất sẽ được đánh giá cao.
Bạn nói đúng nhưng vấn đề là nếu đơn đăng ký của tôi ở trạng thái bị giết và thông báo im lặng đến trước khi ứng dụng của tôi không khởi chạy ở chế độ nền. –
Bạn có chắc chắn không? Điều này có thể khó gỡ lỗi. Bạn có thể thấy nó dễ nhất (nếu Xcode debug-fu của bạn không phải là 100%) để viết nhật ký cho một tệp khi ứng dụng của bạn được khởi chạy để bạn có thể thấy ứng dụng đang kích hoạt ngay cả khi bạn không được đính kèm với Trình gỡ lỗi Xcode. Công nghệ này chắc chắn hoạt động, nhưng [có một số quirks thường xuyên] (http://stackoverflow.com/questions/19239737/silent-push-notification-in-ios-7-does-not-work). – TwoStraws
Nếu ứng dụng của bạn bị người dùng chấm dứt theo cách thủ công, điều này thường được thực hiện như một gợi ý của hệ điều hành mà người dùng * thực sự * không muốn nó chạy. Chắc chắn một số quy trình "nền" khác trong iOS (ví dụ: chuyển tệp nền bằng NSURLSession) cụ thể * không * khởi động ứng dụng của bạn như bình thường nếu nó bị giết khỏi trình chuyển đổi ứng dụng.Tôi không biết về trường hợp cụ thể này, nhưng nó sẽ không làm tôi ngạc nhiên khi thấy rằng một ứng dụng được chấm dứt thủ công sẽ không đánh thức thông báo đẩy cho đến khi nó được người dùng bắt đầu lại theo cách thủ công. –