2015-04-24 20 views
10

Với đoạn mã sau tôi nhận được (2) trong biểu tượng huy hiệu ngay lập tức sau khi ứng dụng biên dịch:Cập nhật huy hiệu truy cập trong Swift

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { 
    let installation = PFInstallation.currentInstallation() 
    installation.setDeviceTokenFromData(deviceToken) 
    installation.badge = 2 
    installation.saveInBackground() 
} 

tôi đã thử các biến thể tiếp theo: Khởi tạo một mới var badgeCount = 0 và sau:

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { 
    badgeCount++ 
    let installation = PFInstallation.currentInstallation() 
    installation.setDeviceTokenFromData(deviceToken) 
    installation.badge = badgeCount 
    installation.saveInBackground() 
} 

Nhưng khi tôi nhận được thông báo mới nó không cập nhật đến +1. Có ai biết cách sửa nó không?

Trả lời

11

Nó sẽ không cập nhật số huy hiệu với phương pháp này trừ khi ứng dụng thực sự mở. Nếu bạn muốn cập nhật số huy hiệu khi nhận được thông báo thì bạn cần phải thiết lập các thuộc tính của thông báo json đẩy Badge với số mong muốn.

Nếu bạn, nếu bạn đang gửi một tin nhắn bình thường (không sử dụng json) có một chuyển đổi để tăng số lượng huy hiệu, chỉ cần đánh dấu vào đó. Nếu bạn đang sử dụng Json sau đó sử dụng này:

{ 
    "aps": { 
     "alert": "Test Push Notification", 
     "sound": "yourSound.aiff", 
     "Badge": "desiredNumber" 
    } 
} 

Xin lưu ý, nếu bạn không muốn gửi thông điệp này từ máy chủ, bạn cũng có thể gửi nó từ một thiết bị khác sử dụng push client Parse của, đi vào của bạn cài đặt trong ứng dụng trên Parse.com và bật "đẩy khách hàng", sau đó bạn có thể gửi Json ở trên sang thiết bị của người dùng khác.

+0

làm thế nào tôi có thể gửi nó từ máy chủ? Làm cách nào để biết có bao nhiêu thông báo chưa đọc? –

+0

Tôi có vẻ như bạn đang sử dụng parse.com phải không? Nếu bạn, nếu bạn đang gửi một tin nhắn bình thường (không sử dụng con trai) có một chuyển đổi để tăng số lượng huy hiệu, chỉ cần đánh dấu vào đó. Nếu bạn đang sử dụng Json, hãy sử dụng: { "aps": { "cảnh báo": "Thông báo đẩy thử nghiệm", "âm thanh": "yourSound.aiff", "Huy hiệu": "numberYouNeed" } – Swinny89

+0

Không, tôi sử dụng Pase.com. Bạn có thể cho tôi biết làm thế nào để làm điều đó? Tăng giá trị của huy hiệu –

8

Bất cứ khi nào mã được biên soạn nó cho thấy các biểu tượng huy hiệu đó là trước cửa hàng trong ứng dụng của bạn. Nếu bạn không đặt các biểu tượng huy hiệu = 0 trong ứng dụng của nó sẽ hiển thị số biểu tượng huy hiệu trong ứng dụng của bạn mỗi khi bạn biên dịch nó hoặc nhập trong tình trạng nền.

Bây giờ cho vấn đề của bạn, sử dụng biểu tượng huy hiệu như

var badgeCount = 0 

UIApplication.sharedApplication().applicationIconBadgeNumber = ++badgeCount 

Ngoài ra bất cứ khi nào bạn đang thực hiện với nhiệm vụ của bạn làm cho biểu tượng huy hiệu là 0 nếu không nó sẽ hiển thị một biểu tượng huy hiệu trong ứng dụng của bạn

UIApplication.sharedApplication().applicationIconBadgeNumber = 0 
+0

Tôi dán nó vào trong 'didRegisterForRemoteNotificationsWithDeviceToken' như:' let notif = UIApplication.sharedApplication() notif.applicationIconBadgeNumber = ++ badgesCài đặt cài đặt.saveInBackground() 'và không có gì nữa =/ –

+0

nếu bạn không tạo biểu tượng huy hiệu = 0 sẽ hiển thị mọi lúc –

+0

Tôi làm cho nó bằng 0 –

4

Tôi đã làm việc trên kịch bản tương tự và giải pháp cuối cùng tôi tìm thấy để tăng và đặt lại số huy hiệu.

Tăng Badge số

  1. tôi luôn luôn lưu đếm số huy hiệu trong bộ nhớ (NSUserDefaults)
  2. Mỗi lần tôi phải thiết lập các thông báo, tôi nhận được tăng số huy hiệu hiện tại và đặt số đó trên .applicationIconBadgeNumber và cập nhật số lượng trong bộ nhớ.

Đặt lại Badge Số

  1. Trong trường hợp của tôi, tôi phải đặt lại tất cả các tính huy hiệu khi ứng dụng được mở ra. Vì vậy, tôi đã thiết UIApplication.sharedApplication().applicationIconBadgeNumber = 0 trong didFinishLaunchingWithOptions của AppDelegate. Ngoài ra tôi đặt lại số đếm trong bộ nhớ.
+0

Bạn có thể cung cấp một số mã hoàn chỉnh trong Sift 3+ không, cảm ơn –

-1

Không có câu trả lời nào trong số những câu trả lời này hợp lệ nữa.

Bạn cần phải được xem xét mã của bạn Push, không appdelegate bạn

Từ các tài liệu Parse:

badge: (iOS/OS X only) 
the value indicated in the top right corner of the app icon. 
This can be set to a value or to Increment in order to increment the current value by 1. 
Các vấn đề liên quan