gpt4 book ai didi

ios - 无法访问时的本地通知和后台应用程序

转载 作者:行者123 更新时间:2023-11-29 10:40:06 27 4
gpt4 key购买 nike

目标是在应用程序处于后台时通知最终用户可达性发生变化。

广播方法 NSNotificationCenter 在后台不工作。第二种方法我在 applicationDidEnterBackground 中尝试了 beginBackgroundTaskWithExpirationHandler 但与之相关的问题:

a) 10 分钟的时间限制

b) 我调用了一个结束循环来检测在主线程上运行的可达性状态,结果它阻塞了 UI。代码:-

-(void)applicationDidEnterBackground:(UIApplication *)application
{
NSLog(@"Application entered background state.");
// bgTask is a property of the class
if (isUserLogin) {
NSAssert(self.bgTask == UIBackgroundTaskInvalid, nil);

bgTask = [application beginBackgroundTaskWithExpirationHandler: ^{
dispatch_async(dispatch_get_current_queue(), ^{
[application endBackgroundTask:self.bgTask];
self.bgTask = UIBackgroundTaskInvalid;
});
}];

dispatch_async(dispatch_get_current_queue(), ^{
while ([application backgroundTimeRemaining] > 1.0) {
curReach = [[utilities sharedUtility]reachabilityChanged];
NetworkStatus netStatus = [curReach currentReachabilityStatus];
NSLog(@"-----------back ground task------------");
if (netStatus == ReachableViaWWAN || netStatus == ReachableViaWiFi) {
//isNetworkMessagePopup = YES;
}
else{
// if (isNetworkMessagePopup) {
// isNetworkMessagePopup = NO;
UILocalNotification *localNotif = [[UILocalNotification alloc] init];
if (localNotif) {
localNotif.alertBody = FORMAT_UNABLE_TO_CONNECT_SERVER_DUE_TO_NO_INTERNET;
localNotif.alertAction = NSLocalizedString(@"Read Message", nil);
localNotif.soundName = @"pushNotification.caf";
localNotif.repeatInterval = 5;
//localNotif.applicationIconBadgeNumber = 1;
[application presentLocalNotificationNow:localNotif];
[localNotif release];
break;
//}
}
}
}
[application endBackgroundTask:self.bgTask];
self.bgTask = UIBackgroundTaskInvalid;
});
}
}

请建议我是否可以在可达性发生变化且应用处于后台状态时在 iOS 中通知用户?

如果是,那么我该如何实现。

谢谢。

最佳答案

您可以使用 iOS App Programming Guide 中描述的后台获取功能检查覆盖能力并在网络不可用时发布本地通知。

无法保证调用的频率 - 可能每隔几分钟或更长时间 - 当然不是每隔几秒。

关于ios - 无法访问时的本地通知和后台应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24995440/

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