gpt4 book ai didi

ios - 通过静默推送通知启动 LocationManager 的 startUpdatingLocation

转载 作者:行者123 更新时间:2023-11-28 18:34:34 25 4
gpt4 key购买 nike

我正在创建需要在特定时间在后台唤醒的应用。

我试过了:

  1. UILocalNotification:但我不想使用 UILocalNotification,因为它需要用户交互才能点击通知,而且只有应用程序会唤醒并启动位置管理器。

  2. 我还使用了启用后台模式位置更新的 [locationManager startUpdatingLocation];,这是可行的,但会耗费大量电量。

因此,使用新的 iOS 7 功能 Silent pushNotificationdidReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler: 方法我需要在后台启动位置管理器,

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{

NSLog(@"Receive RemoteNotification in fetchCompletionHandler with UserInfo:%@",userInfo);
application.applicationIconBadgeNumber=0;
__block UIBackgroundTaskIdentifier bgTask = [application beginBackgroundTaskWithExpirationHandler:^{

[self.locationManager startUpdatingLocation];

[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];

}

静默推送通知工作正常,

PushNotification 的负载:

{"aps" : {"content-available" : 1},"SilentPushId" : "07"}

但这不会启动位置管理器,请有人帮助我。

编辑:

如果不可能,请给我一些建议。

最佳答案

我已经成功地使用 Silent Pushnotification 实现了它并调用了 startUpdatingLocation 并且我能够在委托(delegate)方法中获取位置数据:

使用这个负载:

{
"aps": {
"content-available": 1
},
"SilentPush": "4"
}

我已为后台模式启用位置和远程通知: enter image description here

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler
{
__block UIBackgroundTaskIdentifier bgTask =0;
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[self.locationManager startUpdatingLocation];

}];

didUpdateLocations

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
lastLoc=[locations lastObject];
[logFile addLocObject:[NSString stringWithFormat:@"Loc: %@",lastLoc]];
}

关于ios - 通过静默推送通知启动 LocationManager 的 startUpdatingLocation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21602804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com