iOS中的本地通知未清除

时间:2014-06-05 08:34:48

标签: ios notifications uilocalnotification ibeacon

我正在使用Beacon设备进行测试。方案如下。 当接收器进入基于纬度和频率的位置时,我正在抛出本地通知。我手动设置的经度范围。这工作正常,我正在清除didFinishLaunchingWithOptions上的这个通知。当我进入下一个最近的区域时,我正在收到通知,点击它后我就能看到一个视图。但是当我从应用程序中退出时,本地通知不会被清除。可能是什么问题?

我在两个不同的地区使用两种不同的方法。 第一个是

-(void) didEnterLocation:(SLMLocation*)location
{
// throwing a local notification
}

上述方法的通知已在

中清除
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{
    [[UIApplication sharedApplication] cancelAllLocalNotifications];
}

第二种方法如下:这是针对第二区域的

- (void) didEnterNewClosestRegion :(SLMBLERegion*) region
{
// throwing local notifications here & notifications are visible
}

现在在第二种方法中,我无法清除本地通知。非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

这是因为 didFinishLaunchingWithOptions 方法仅在应用有效期内被调用一次,因此有可能它已在后台运行,因此通知将不会被清除。我建议你将取消代码移到 applicationDidBecomeActive

cancelAllLocalNotifications,取消所有已安排的本地通知的发送,但不会清除锁定屏幕或通知中心已显示的通知。

https://developer.apple.com/library/ios/documentation/uikit/reference/UIApplication_Class/Reference/Reference.html#//apple_ref/occ/instm/UIApplication/cancelAllLocalNotifications

答案 1 :(得分:1)

尝试这可能会有所帮助..

 - (void)applicationDidBecomeActive:(UIApplication *)application
{
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
    [[UIApplication sharedApplication] cancelAllLocalNotifications];

}

谢谢