2012-07-03 34 views
12

Tôi đã thấy ứng dụng thư trong iPhone (4S, iOS 5.1) tự động cập nhật số lượng huy hiệu nếu thư mới đến, ngay cả khi ứng dụng không chạy. Vì vậy, có thể đạt được hành vi này trong ứng dụng của tôi, phải không?Thông báo đẩy của Apple không tự động thay đổi biểu tượng huy hiệu

Ứng dụng của tôi đăng ký thành công các thông báo đẩy cho cả 3 loại - Huy hiệu, Cảnh báo và Âm thanh. Cài đặt điện thoại được đặt BẬT cho tất cả 3 loại thông báo từ xa cho ứng dụng này.

Ứng dụng của tôi nhận thông báo từ xa và hiển thị cảnh báo, phát âm thanh, nhưng nó không cập nhật số hiệu huy hiệu. Nếu tôi khởi chạy ứng dụng thông qua nút Xem trên cảnh báo thì ứng dụng của tôi có thể đọc giá trị huy hiệu một cách hoàn hảo và tôi có thể thay đổi/xóa/đặt biểu tượng huy hiệu từ mã.

Bất kỳ lý do cụ thể nào khiến iOS không thể tự động thay đổi huy hiệu biểu tượng của ứng dụng khi thông báo xuất hiện? Tôi đã thấy tất cả các bài đăng tương tự, tất cả họ đều thảo luận về cài đặt điện thoại hoặc về các loại thông báo đã đăng ký hoặc về việc kiểm tra tải trọng JSON có bao gồm huy hiệu hay không.

Có lý do nào khác có thể gây ra sự cố này không?

Đây là khối mã của tôi:

Đăng ký cho APN mọi ứng dụng thời gian được đưa ra -

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)]; 

Device dấu hiệu nhận gần như ngay lập tức. Mã thông báo đã được gửi tới nhà cung cấp và tôi nhận được thông báo. Cảnh báo và âm thanh hoạt động. Nhưng huy hiệu không có hiệu ứng tự động cho đến khi tôi khởi chạy ứng dụng và thay đổi nó theo cách thủ công. Hãy giúp tôi.

+0

huy hiệu của bạn được đặt thành +1 khi bạn gửi thông báo không? hay chỉ 1? – mkral

+0

Ngoài sự tò mò, bạn đang sử dụng thông báo đẩy để làm gì? – Wug

+0

@mkral, được đặt thành 1 – zinnuree

Trả lời

20

Sự cố đã được khắc phục. Máy chủ nhà cung cấp đã gửi số huy hiệu trong dấu ngoặc kép (dưới dạng Chuỗi JSON, tức là "9"). Kỳ lạ rằng APN/iOS không nhận ra nó là số nguyên. Bây giờ các dấu ngoặc kép được xóa và nó hoạt động :)

27

Tôi cũng có vấn đề tương tự như vậy. Biểu tượng huy hiệu không được trích dẫn. Sau nhiều giờ cố gắng chỉnh sửa JSON (sau khi xác minh ứng dụng trên điện thoại cho thấy huy hiệu, âm thanh, cảnh báo) - vấn đề là tôi đã thêm UIRemoteNotificationTypeNewsstandContentAvailability là một trong các loại cảnh báo mà ứng dụng của tôi đang đăng ký. (Tôi phát điên, chỉ cần chọn mọi thứ)

Vì vậy, khi UIRemoteNotificationTypeNewsstandContentAvailability cũng kết hợp, có vẻ như ghi đè chức năng cho phép số aps/huy hiệu cập nhật biểu tượng ứng dụng. (Phải tìm cách để cập nhật thông tin sạp báo)

+4

Cảm ơn! "newsstand" hóa ra cũng là vấn đề của tôi. – Perry

+1

Cảm ơn! rất nhiều. (Tôi cũng phát điên). – majorl3oat

+0

Cảm ơn bạn rất nhiều! đã dành nửa ngày với vấn đề này. – PSsam

0

Tôi đã có một vấn đề tương tự, giải quyết nó bằng cách buộc số nguyên trong số huy hiệu (sử dụng PHP với dữ liệu đến từ MySQL db):

$body['aps'] = array(
     'alert' => array(
     'action-loc-key'=> utf8_encode($r['button_action']), 
     'body'   => utf8_encode($r['message']), 
     'launch-image' => '' 
     ), 
    'badge' => (int)$r['badge_number'], 
    'sound' => 'default' 
    ); 

PS .: mất hãy xem lệnh utf8_encode để tránh lỗi json_encode tôi cũng phải đối mặt trước đó.

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