iphone - 增量后清除推送通知标志

标签 iphone ios push-notification urbanairship.com

我正在 iPhone 中处理推送通知。当我收到推送通知时,它在我的应用程序图标上显示 1,下次是 2、3、4。如果我打开应用程序它的 0。下一次它应该是 1、2、3、4... 但它显示最后一个数字和 +1。我想在打开应用程序后重置推送通知角标(Badge)。我从 Urban Airship 发送+1。

它对我不起作用。

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

最佳答案

我在我的应用程序中使用此代码,因为 Urban Airship (UA) 文档说

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

但它不起作用,应用程序图标上的角标(Badge)不断增加。我在 UA 的论坛上看到了一些关于这个问题的帖子,但他们没有给出明确的答案。

编辑#1:

我收到了 UA 支持技术人员的以下回复,其中包含以下建议,效果很好:

您要做的是确保在您的 didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中调用以下内容:

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

并且还在以下方法中调用[[UAPush shared] resetBadge];:

applicationDidBecomeActive:(UIApplication *)application

didReceiveRemoteNotification:(NSDictionary *)userInfo

技术人员也提到applicationIconBadgeNumber不需要赋0,所以我就把它拿出来了。仍然很漂亮。

编辑#2:

我最终不得不修改 application:didReceiveRemoteNotification: 以包含对 UA 的 handleNotification:applicationState: 方法的调用:

-(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];
}

因为我遇到了以下情况的问题:

  1. 用户在应用中
  2. 收到推送通知
  3. 返回主屏幕时应用程序图标上没有显示角标(Badge)(如预期)
  4. 收到另一个推送通知
  5. 角标(Badge)显示数量大于 1

通过上面的修改,这个场景就处理好了。我猜你必须告诉 UA,当收到一个通知并且应用程序在前台运行时,通知就会被处理。

关于iphone - 增量后清除推送通知标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13757285/

相关文章:

iphone - scrollViewDidEndScrollingAnimation 没有被调用

iphone - 在 iphone 中使用 UIScrollView 滚动图像(第 2 部分)

ios - Swift 2.2 Xcode 7.3 touch 在下面标记的特定区域不工作

ios - 在 UIScrollView 内滚动时,调整大小的 UIWebView 返回到原始大小

ios - 使用适用于 iOS 的 FlickrKit 进行身份验证

iphone - 设备上的 NSTimer 比模拟器上的慢

iPhone UIScrollview 页面

cordova - 如何为推送通知设置 Meteor Raix 推送包

java - 在 Android 应用程序的同一 Activity 中保存多个推送通知

android - 从推送通知打开安卓应用