Tôi không nhận được thông báo về newsstand khi ứng dụng không chạy, dưới đây là những gì tôi đã làm.Chỉ nhận thông báo Newsstand khi ứng dụng đang chạy
Ứng dụng có các phím plist thích hợp 'UINewsstandApp = YES' và 'UIBackgroundModes = newsstand-content'.
Trong ủy nhiệm ứng dụng, tôi đăng ký tất cả các loại thông báo và nhận mã thông báo từ APNS, từ phía máy chủ (tôi đang sử dụng gem gọi là Grocer) i thiết lập chứng chỉ dev và gửi push thông thường. .
nếu tôi gửi một quầy tạp chí, tôi nhận được nếu ứng dụng đang chạy trên 'didReceiveRemoteNotification', nhưng khi ứng dụng không chạy, tôi không nhận được gì trong trung tâm thông báo, chủ yếu là vì 'Grocer' có trọng tải sau {"aps": {"content-available": 1}} và không thể thêm bất kỳ khóa nào khác (cảnh báo, huy hiệu, v.v.)
vì vậy tôi nghĩ rằng tôi không nên nhận bất kỳ điều gì trong trung tâm thông báo, tôi nhìn cho 'UIApplicationLaunchOptionsRemoteNotificationKey' trong tùy chọn khởi chạy và sau đó viết tệp để đảm bảo rằng ứng dụng chạy dưới nền, tệp không bao giờ được viết như vậy
NSDictionary *remoteNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if(remoteNotif)
{
NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filePath = [cachePath stringByAppendingPathExtension:@"pushreceived.txt"];
[@"testing" writeToFile:filePath atomically:YES encoding:NSASCIIStringEncoding error:nil];
}
Tôi có NKDontThrottleNewsstandContentNotifications được đặt thành true trong các giá trị mặc định của người dùng và sau đó tôi đồng bộ hóa để đảm bảo.
khi ứng dụng đang chạy, dù có bao nhiêu lần tôi gửi push, tôi luôn luôn có được một cuộc gọi lại vào "didReceiveRemoteNotification", với "nội dung có sẵn" thích hợp
nếu ứng dụng được đóng hoặc trong nền, không có gì xảy ra.
Cập nhật:
tôi quản lý để thay đổi đá quý mà gửi payload thông báo, đây là từ điển nó sẽ gửi
{"aps"=>
{
"alert"=>"Hello iPhone!!",
"content-available"=>1,
"badge"=>1,
"sound"=>"default"
}
}
và đây từ điển UserInfo tôi nhận được trên ứng dụng của tôi (trong khi chạy)
{
aps = {
alert = "Hello iPhone!!";
badge = 1;
"content-available" = 1;
sound = default;
};
}
hãy lưu ý các dấu ngoặc kép quanh nội dung có sẵn, điều này có nghĩa là APNS đã phân tích cú pháp đó dưới dạng khóa tùy chỉnh?
thông báo quầy báo 'trong lý thuyết' sẽ có thể khởi động ứng dụng ngay cả khi nó được tắt bằng 'UIApplicationLaunchOptionsRemoteNotificationKey' .. điều đó không xảy ra tại – Zoidberg
@Zoidberg câu trả lời này có hữu ích không? http://stackoverflow.com/a/4296282/187954 –
Thật đáng buồn, nó không phải là, đó là bản chất những gì tôi đang làm trong các mã trong câu hỏi của tôi: < – Zoidberg