- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的应用程序第二次因 GPS 后台 key 而被拒绝。这是我正在使用的代码:
-(void)stopGPS{
[self.locationManagerAll stopUpdatingLocation];
self.locationManagerAll.delegate = nil;
locationManagerAll = nil;
self.cloop = 1;
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setValue:[NSNumber numberWithBool:NO] forKey:@"UpdateLocation"];
[prefs setValue:[NSNumber numberWithInt:0] forKey:@"updationTime"];
[prefs synchronize];
[set.gpsOnOff setOn:NO];
[set.settingsTable reloadData];
[self stopThread];
}
-(void)startGPS{
if ([CLLocationManager locationServicesEnabled]){
if(self.locationManagerAll == nil){
self.locationManagerAll = [[CLLocationManager alloc] init];
self.locationManagerAll.delegate = self;
}
self.locationManagerAll.desiredAccuracy = kCLLocationAccuracyHundredMeters;
self.locationManagerAll.distanceFilter = kCLDistanceFilterNone;
[self.locationManagerAll startUpdatingLocation];
}else {
[set.gpsOnOff setOn:NO];
[set.settingsTable reloadData];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Location Service Disabled"
message:@"To re-enable, please go to Settings and turn on Location Service for this app."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
}
}
以上这些函数用于启动或停止GPS定位,以下是GPS定位的实现:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
if ([oldLocation.timestamp timeIntervalSinceNow] < - 5) return;
if (newLocation.horizontalAccuracy > 5.0) return;
if (newLocation.coordinate.latitude == oldLocation.coordinate.latitude && newLocation.coordinate.longitude == oldLocation.coordinate.longitude) return;
NSString *currentLatitude = [[NSString alloc]
initWithFormat:@"%f",
newLocation.coordinate.latitude];
NSString *currentLongitude = [[NSString alloc]
initWithFormat:@"%f",
newLocation.coordinate.longitude];
[prefs setValue:currentLatitude forKey:@"UpdateLocationLati"];
[prefs setValue:currentLongitude forKey:@"UpdateLocationLongi"];
[prefs synchronize];
[currentLatitude release];
[currentLongitude release];
if (self.cloop == 1) {
/*UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:@"Current location saved." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release]; */
self.cloop = 0;
[prefs setValue:[NSNumber numberWithInt:60] forKey:@"updationTime"];
[prefs setValue:[NSNumber numberWithBool:YES] forKey:@"UpdateLocation"];
[prefs synchronize];
[set.gpsOnOff setOn:YES];
[set.settingsTable reloadData];
[self startThread];
}
}
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
if ([error code] != kCLErrorLocationUnknown) {
[self stopGPS];
UIAlertView *alert = [[UIAlertView alloc] init];
[alert setTitle:@"Location"];
[alert setMessage:@"Unable to get current location"];
[alert setDelegate:self.set];
[alert addButtonWithTitle:@"Cancel"];
[alert addButtonWithTitle:@"Retry"];
[alert show];
[alert release];
}
}
我还使用计时器线程,每秒更新服务器上的位置。当应用程序进入后台时计时器停止,我使用此代码来处理此问题:
- (void)applicationDidEnterBackground:(UIApplication *)application{
/*
Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.*/
if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)]) { //Check if our iOS version supports multitasking I.E iOS 4
if ([[UIDevice currentDevice] isMultitaskingSupported]) { //Check if device supports mulitasking
UIApplication *application = [UIApplication sharedApplication]; //Get the shared application instance
__block UIBackgroundTaskIdentifier background_task; //Create a task object
background_task = [application beginBackgroundTaskWithExpirationHandler: ^{
[application endBackgroundTask:background_task];
//Tell the system that we are done with the tasks
background_task = UIBackgroundTaskInvalid; //Set the task to be invalid
//System will be shutting down the app at any point in time now
}];
//Background tasks require you to use asyncrous tasks
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//Perform your tasks that your application requires
//I do what i need to do here.... synchronously...
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
if ([[prefs objectForKey:@"updationTime"] intValue] > 0 && [[prefs objectForKey:@"UpdateLocation"] boolValue]) {
self.backgroundTimer = [NSTimer timerWithTimeInterval:[[prefs objectForKey:@"updationTime"] intValue] target:self selector:@selector(backgroundTriggerTimer) userInfo:nil repeats:YES];
NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
[runLoop addTimer:backgroundTimer forMode:NSRunLoopCommonModes];
[runLoop run];
}
[application endBackgroundTask:background_task];
//End the task so the system knows that you are done with what you need to perform
background_task = UIBackgroundTaskInvalid; //Invalidate the background_task
});
}else if (![[UIDevice currentDevice] isMultitaskingSupported]) {
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
if ([[prefs objectForKey:@"UpdateLocation"] boolValue]){
[self stopGPS];
}
}
}else if (![[UIDevice currentDevice] isMultitaskingSupported]) {
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
if ([[prefs objectForKey:@"UpdateLocation"] boolValue]){
[self stopGPS];
}
}
}
这是我正在使用的线程代码:
-(void)startThread
{
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
if ([[prefs objectForKey:@"UpdateLocation"] boolValue]) {
self.updateLocation = [[NSThread alloc] initWithTarget:self selector:@selector(setUpTimerThread) object:nil];
[self.updateLocation start];
}
}
-(void)stopThread{
[self.updateLocation cancel];
updateLocation = nil;
[self.gpsTimer invalidate];
}
-(void)setUpTimerThread
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
if ([[prefs objectForKey:@"updationTime"] intValue] > 0) {
self.gpsTimer = [NSTimer timerWithTimeInterval:[[prefs objectForKey:@"updationTime"] intValue] target:self selector:@selector(triggerTimer) userInfo:nil repeats:YES];
NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
[runLoop addTimer:gpsTimer forMode:NSRunLoopCommonModes];
[runLoop run];
}
[pool release];
}
-(void)triggerTimer
{
NSLog(@"***Timer Called after seconds**");
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *location = [[[NSString alloc] initWithFormat:@"%f_%f",[[prefs objectForKey:@"UpdateLocationLati"] doubleValue], [[prefs objectForKey:@"UpdateLocationLongi"] doubleValue]] autorelease];
NSString *urlGen = [[[NSString alloc] initWithFormat:@"%@%d/%@",[prefs objectForKey:@"update_user_location"],[[prefs objectForKey:@"USERID"] intValue], location] autorelease];
NSLog(@"urlGen: %@", urlGen);
NSString *rt = [JSONModel stringWithUrl:urlGen];
if (self.alertLoop == 1) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:@"GPS location has been sent. This alert message will only prompt you once." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
self.alertLoop = 0;
}
NSLog(@"UPDATE LOCATION : %d", [rt intValue]);
}
我完全困惑了。我不知道我是否错过了什么。任何人都可以帮助我吗?
最佳答案
看起来您没有错过什么,但 2.16 被拒绝的可能原因之一是 iTunesConnect 中应用元的应用描述中缺少 GPS 电池警告 - “继续使用 GPS 可能会缩短电池生命周期”或类似的东西。
关于准则 2.16 下的 iPhone 应用程序拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12742129/
It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, over
我开始自学数据库的基础知识,目前正在研究1.到3.普通形式。到目前为止,我了解的是希望消除冗余,以使我的数据库在数据更改阶段不太容易出现不一致的情况,并希望通过消除尽可能多的重复项来节省空间。 例如,
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 8 年前。 Improve
我有 2 个自动续订的应用程序内订阅正在接受 Apple 审核,但我一直被拒绝。请注意,这与 IAP 产品(显然尚未审查)无关,而是与我在 UI 中呈现信息的方式有关。我永远无法让 Apple 明确说
我非常喜欢 Entity Framework Code First 的想法,因为我可以快速制作新项目的原型(prototype),但现在我正在处理一个已经存在的数据库。 我们有许多具有相同模式的数据库
关于网页上的链接颜色与常规文本之间的对比,是否有任何最佳做法或指南? 我知道有关于文本与背景颜色的对比度指南,但我也想知道是否有关于纯文本和链接文本之间应存在的最小颜色差异的指南。 例如,我的背景是白
这是我的应用程序第二次因 GPS 后台 key 而被拒绝。这是我正在使用的代码: -(void)stopGPS{ [self.locationManagerAll stopUpdatingLocati
是否有一个Python模块,当给定两个向量x和y,其中y是二类(0,1)时,它计算Fisher准则,如这里的公式http://compbio.soe.ucsc.edu/genex/genexTR2ht
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 4 年前。 Improv
我们正在实现一个 Windows 7 应用程序,它会在任务栏的通知区域中显示一个弹出窗口。 简单形式有两个版本。 和精简版: 哪个更接近 Windows 的 UI 指南?有充分的理由偏爱其中之一吗?
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 5年前关闭。 Improve t
我使用带有随机初始化的 k 均值聚类来进行聚类识别。算法适用于良好的数据。但是,如果我处理带有很多噪声的数据,那么我的 k-means 算法就会失去其稳健性,并且会为同一数据集上的每次运行提供不同的解
我正在尝试使用 pygame 在一个简单的 2D 窗口中模拟重力。这是非常简单的东西(一个点再次上升和下降),我理解其中的机制,即速度作为向量,并且 y 部分在每次主循环运行以及随后的位置更新期间不断
我们开发了一款约会应用,要求用户输入高度等个人信息。我们的应用程序获得批准超过 5 次,但最近因更新而被拒绝。我们需要这些信息,因为我们希望每个配置文件都保持一致,而不是有任何半填充的配置文件。我们还
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 10 个月前。 Impro
我在 Django 中有一个类似这样的长 url 模式: url(r'^(?i)top-dir/(?P[-\w]+?)/(?P[-\w]+?)/(?P[-\w]+?).html/$', 'ap
我使用 Firebase 进行用户身份验证,我刚刚重新提交了我的应用程序并得到了以下拒绝: Guideline 5.1.2 - Legal - Privacy - Data Use and Shari
Google AdMob 现在显示以下警告。 为 iOS 14 准备您的应用程序 Apple 宣布了新的 AppTrackingTransparency 框架,该框架需要对您的 iOS 应用程序进行更
我是一名优秀的程序员,十分优秀!