2014-06-05 70 views
-1

我正在使用Beacon设备进行测试。情景如下。 我在接收器输入基于我手动设置的纬度&经度范围的位置时抛出本地通知。这工作正常,我清理didFinishLaunchingWithOptions这个通知。当我进入下一个最接近的区域时,我收到通知并单击它可以呈现视图。但是当我走出应用程序时,本地通知不会被清除。可能是什么问题?本地通知未在iOS中清除

我使用两个不同区域的两个不同的方法。 第一一个是

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

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

回答

1

这是因为didFinishLaunchingWithOptions方法在应用程序生命周期只叫一个,有可能它已经在后台运行,因此通知将不会被清除。我建议您将取消代码移至applicationDidBecomeActive

cancelAllLocalNotifications,取消所有预定本地通知的传递,它不会清除从锁屏或通知中心已经呈现通知。

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

+0

我想知道为什么通知没有得到清除,当我在applicationWillResignActive方法使用cancelAllLocalNotifications。你有什么想法,为什么这不被称为? – Chan

+0

你想清除预定的通知吗?或提出的?你可以更具体和详细。 – Zee

+0

NO。我根本不使用预定的通知。只是提出的一个,我扔了。 – Chan

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

} 

感谢

+0

我想知道为什么在applicationWillResignActive方法中使用cancelAllLocalNotifications时通知没有被清除。你有什么想法,为什么这不被称为? – Chan