我正在开发一个应用程序,当用户使用区域监控靠近某些地标时会提醒用户。一切正常,但当应用程序在后台时,我没有收到警报。当我打开应用程序时,我会弹出所有警报。我想要的是在应用程序处于后台时获取它们。我想知道是否可能或应用程序是否需要运行以获取警报?任何帮助将不胜感激。
更新: 问题似乎是我使用了警报而不是本地通知。这是我使用的代码:
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
NSLog(@"Entered Region - %@", region.identifier);
[self showRegionAlert:@"You are near: " forRegion:region.identifier];
}
如何将此更改为本地通知?
答案 0 :(得分:7)
检查
中的“测试您的应用区域监控”部分如果您在前景和背景之间来回切换,则可能无法满足阈值条件,并在将应用程序再次移至前台之前触发。
此外,当后台应用程序收到通知时,只有一个小窗口用于处理该消息。尝试做网络请求可能会超时......
检查您的plist设置 - 如果您需要高精度定位,则仅需要将位置声明为UIBackgroundModes。即使没有定位,重要的位置变化也会起作用。
检查是否正在调用locationManager:didUpdateLocations:和locationManager:didFailWithError:并且没有发布错误。
检查您的plist中是否未将ApplicationRunsInBackground设置为NO。
尝试实现AppDelegates applicationDidEnterBackground:,application:didFinishLaunchingWithOptions:和朋友们在应用程序生命周期中找到你在给定时间的位置。
答案 1 :(得分:0)
UILocalNotification* localNotification = [[UILocalNotification alloc] init]; localNotification.alertBody = @"I'M IN THE REGION"; localNotification.userInfo = [[NSDictionary alloc]initWithObjectsAndKeys:@"nearBy",@"type", nil]; localNotification.timeZone = [NSTimeZone defaultTimeZone]; localNotification.soundName = UILocalNotificationDefaultSoundName; [[UIApplication sharedApplication] presentLocalNotificationNow:localNotification];
答案 2 :(得分:0)
/*doc
---
title: Colors
name: Colors
category: Base CSS
---
List of the colors used.
*/
@each $i in $colors {
/*
<div class="cube-wrapper">
<div class="color-cube #{nth($i, 1)}"></div>
<code>$#{nth($i, 1)}</code>
</div>
*/
}
@each $i in $colors {
.#{nth($i, 1)} {
background-color: nth($i, 2);
}
}