【发布时间】:2015-09-17 17:54:11
【问题描述】:
我想向后台应用程序发送静默推送通知,然后获取当前用户位置并将其发送到 Web 服务。
我实现了推送通知方法以及这两个方法:
- (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
NSDate *fetchStart = [NSDate date];
[self sendLocationToServerWithCompletionHandler:^(UIBackgroundFetchResult result) {
completionHandler(result);
NSDate *fetchEnd = [NSDate date];
NSTimeInterval timeElapsed = [fetchEnd timeIntervalSinceDate:fetchStart];
NSLog(@"Background Fetch Duration: %f seconds", timeElapsed);
}];
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
}
我还创建了一个将位置发送到服务器的方法:
- (void)sendLocationToServerWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
NSDictionary *params = @{
@"UserId" : self.userId,
@"Latitude" : self.latitude,
@"Longitude" : self.longitude
}
ServerManager *manager = [ServerManager sharedManager];
[manager sendLocationToServerWithCompletion:^(BOOL success) {
if (success)
{
completionHandler(UIBackgroundFetchResultNewData);
}
else
{
completionHandler(UIBackgroundFetchResultFailed);
}
}];
}
我只是不明白它们是如何协同工作的,Apple 是否会批准,是否可能以及位置背景提取进入何处。
提前致谢。
【问题讨论】:
-
是的,它可能,而且我在应用商店中有一个应用程序正是这样做的,所以是的,Apple 会批准它。但除此之外,尚不清楚您的实际问题是什么。您已经展示了两个完全不同的小段代码,它们彼此之间没有任何关系。您是否要求人们为您完成您的计划?
-
不,当然不是,我是在请人指导我怎么做,给我看一个教程,如何将我想要的三个后台任务组合在一起,因为我真的很困惑和不知道怎么做。谢谢你的回答。
标签: ios objective-c push-notification background-task background-fetch