2011-02-01 30 views
79

Tôi đã thấy một số ứng dụng cần làm cập nhật huy hiệu ứng dụng vào lúc nửa đêm, luôn hiển thị đúng số lượng tác vụ đến hạn. Họ thực hiện điều này mà không cần việc sử dụng Thông báo đẩy - vì vậy câu hỏi của tôi là: làm cách nào để thực hiện việc này? Họ có sử dụng thông báo địa phương không - nếu có, hãy thực hiện các thao tác này khi thiết bị bị tắt? Tôi là một chút bối rối và sẽ đánh giá cao một số đầu vào.Cập nhật huy hiệu iOS mà không cần thông báo đẩy

Trả lời

130

Hãy thử điều này

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1]; 

Để thực hiện điều này thông qua thông báo địa phương, bạn phải thiết lập giá trị trong applicationIconBadgeNumber

UILocalNotification *localNotification = [[UILocalNotification alloc] init]; 
localNotification.applicationIconBadgeNumber = 1;// set here the value of badge 
+1

Đây là cách bạn thay đổi số hiệu huy hiệu - nhưng để làm điều đó trong khi ứng dụng ở chế độ nền hoặc nếu điện thoại đang ngủ, bạn có thể cần phải xem xét thông báo cal hoặc tác vụ được lên lịch. – Jasarien

+2

Trong iOS 8.0 trở lên, ứng dụng của bạn phải đăng ký thông báo người dùng bằng cách sử dụng - [UIApplication registerUserNotificationSettings:] trước khi có thể đặt huy hiệu biểu tượng. – unmircea

7

Set UIApplication 's applicationIconBadgeNumber tài sản trong mã của bạn khi ứng dụng đang chạy:

[UIApplication sharedApplication].applicationIconBadgeNumber = someNumber; 
13

Vì iOS 4.0 bạn có thể kích hoạt l thông báo ocal trên tất cả các thiết bị chạy ít nhất iOS 4.0. Nhìn vào lớp UILocalNotification, nó cho phép bạn đặt huy hiệu vào lúc nửa đêm mà không cần chạy ứng dụng của bạn.

+0

Tính năng này có hoạt động khi thiết bị bị tắt không? – fabian789

+0

Uhm, iPhone thậm chí không có khả năng để bắt đầu đồng hồ báo thức khi nó tắt, vì vậy không, huy hiệu sẽ không cập nhật sau đó. Nhưng khi bạn bật lại, nó sẽ kích hoạt (các) thông báo sẽ cập nhật huy hiệu. – JustSid

+0

Ok, đó là điều tôi muốn biết. Cảm ơn! – fabian789

8

Và đối với tất cả mọi người sử dụng Swift mới và sáng bóng:

UIApplication.sharedApplication().applicationIconBadgeNumber = someNumber 

Swift 3:

UIApplication.shared.applicationIconBadgeNumber = someNumber 
+2

khi đề xuất các câu trả lời nhanh chóng, đây là cách hay để bao gồm phiên bản nào bạn đang sử dụng, vì nó rất năng động ngay bây giờ. –

+0

có bạn đúng; Trong trường hợp này tuy nhiên, không có gì trong cú pháp mà có thể có thể thay đổi (nó là nhiệm vụ đơn giản) vì vậy có lẽ không cần thiết :) –

+1

Jiri, thú vị bình luận trong hindsight ;-) – Tim

0

Đối với Objective C bạn phải sử dụng:

[[UIApplication sharedApplication] setApplicationIconBadgeNumber : anyNumber ];    
Các vấn đề liên quan