2012-12-07 29 views
5

Tôi đang làm việc trên thông báo đẩy trong iphone. khi tôi nhận được thông báo đẩy, hiển thị 1 của nó trên biểu tượng ứng dụng của tôi, thời gian tới 2,3,4 của nó. nếu tôi mở ứng dụng của nó 0. Thời gian tới nó sẽ là 1,2,3,4 ... nhưng hiển thị số cuối cùng của nó và +1. tôi muốn đặt lại huy hiệu thông báo đẩy sau khi mở ứng dụng. tôi đang gửi +1 từ airship đô thị.Xóa huy hiệu thông báo đẩy sau khi tăng

và không hoạt động đối với tôi.

[[UIApplication sharedApplication] cancelAllLocalNotifications]; 
[UIApplication sharedApplication].applicationIconBadgeNumber = 0; 
+0

Bạn đang xóa số huy hiệu cục bộ. Bạn cũng cần phải xóa nó khỏi máy chủ Urban Airship. Tôi không biết Urban Airship. Nhưng tôi chắc chắn nó có một API để đặt lại huy hiệu thông báo tại máy chủ. – EmptyStack

+0

tôi đang gửi số huy hiệu +1 để tăng số tiền trong api của tôi. –

Trả lời

0

Tôi đã sử dụng Airship đô thị và đã gặp sự cố này trước đây. Bạn không hiển thị mã nhưng tôi giả định rằng khi nhận được thông báo, bạn đang đặt số hiệu huy hiệu ứng dụng cho khí cầu đô thị đi qua bạn, đừng làm điều đó. Chỉ cần để ứng dụng tự xử lý việc này, khi có thông báo từ xa, hãy tự động tăng lên. Nếu đó không phải là trường hợp nó có thể được rằng, về phía airship đô thị, bạn đang thiết lập một số huy hiệu để gửi với đẩy. Không gửi số huy hiệu có thông báo đẩy, để phần đó ra, iOS sẽ tự động tăng huy hiệu của bạn từ số huy hiệu hiện tại của nó.

3

tôi sử dụng mã này trong ứng dụng của tôi vì Urban Airship (UA) tài liệu nói đến

[UIApplication sharedApplication].applicationIconBadgeNumber = 0; 
[[UAPush shared] resetBadge]; 

nhưng nó không hoạt động, huy hiệu trên biểu tượng ứng dụng tiếp tục incrementing. Tôi đã thấy một vài bài viết về vấn đề này rất nhiều trên diễn đàn của UA và họ đã không đưa ra một câu trả lời rõ ràng.

EDIT # 1:

tôi nhận được câu trả lời sau đây từ một kỹ thuật viên hỗ trợ tại UA với những gợi ý sau đây, mà làm việc lớn:

Những gì bạn muốn làm, là đảm bảo rằng trong của bạn didFinishLaunchingWithOptions: (NSDictionary *) launchOptions phương pháp, bạn đang gọi như sau:

[[UAPush shared] setAutobadgeEnabled:YES]; 
[[UAPush shared] resetBadge];//zero badge on startup 

và cũng gọi [[UAPush được chia sẻ] resetBadge]; trong các phương pháp sau đây cũng như:

applicationDidBecomeActive:(UIApplication *)application 

didReceiveRemoteNotification:(NSDictionary *)userInfo 

Các kỹ thuật viên cũng nói rằng gán từ 0 đến applicationIconBadgeNumber là không cần thiết, vì vậy tôi lấy nó ra. Vẫn hoạt động rất đẹp.

EDIT # 2:

tôi đã kết thúc cần phải sửa đổi ứng dụng: didReceiveRemoteNotification: để bao gồm một cuộc gọi đến UA của handleNotification: applicationState: phương pháp:

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
{ 
    // Get application state for iOS4.x+ devices, otherwise assume active 
    UIApplicationState appState = UIApplicationStateActive; 
    if ([application respondsToSelector:@selector(applicationState)]) 
    { 
     appState = application.applicationState; 
    } 

    [[UAPush shared] handleNotification:userInfo applicationState:appState]; 
    [[UAPush shared] resetBadge]; 
} 

vì tôi gặp sự cố với kịch bản sau:

    .210
  1. User is trong ứng dụng
  2. Đẩy thông báo nhận
  3. Không huy hiệu được hiển thị trên biểu tượng ứng dụng khi trở về màn hình chủ (như mong đợi)
  4. Một thông báo push được nhận
  5. Badge hiển thị số lớn hơn 1

Với sửa đổi ở trên, kịch bản này được xử lý. Tôi đoán bạn phải nói với UA rằng thông báo được xử lý khi nhận được một thông báo và ứng dụng đang chạy ở nền trước.

+0

Tôi đang gặp vấn đề tương tự. Tôi đã thử đề xuất của bạn, nhưng nó không hiệu quả với tôi. Bạn có thể giúp tôi sửa nó không? Xin hãy xem câu hỏi của tôi ở đây: http://stackoverflow.com/questions/20073212/reset-urbanairship-badge-count –

+0

Tôi không chắc mình có thể thêm thông tin nào khác. Mã bạn thấy ở trên hoạt động cho tôi. – Moebius

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