gpt4 book ai didi

ios - 如何在后台保持 iphone ios websocket 连接?

转载 作者:技术小花猫 更新时间:2023-10-29 11:04:59 33 4
gpt4 key购买 nike

我使用 SocketRocket 创建了一个聊天应用程序,当我退出应用程序(进入后台模式)时,我想接收聊天消息!所以我可以通过将其称为 VoIP 应用程序来做到这一点,但有些人说 Apple 会拒绝将其从 App Store 中删除,除非它也真正支持 VoIP。那么我该怎么做,如果唯一的方法是将其称为 VoIP 应用程序,那么 whatsapp 如何处理这种情况?

以下是我为使应用程序在后台保持事件状态所做的工作:

- (void)applicationDidEnterBackground:(UIApplication *)application
{


NSLog(@"Application entered background state.");
NSAssert(self.backgroundTask == UIBackgroundTaskInvalid, nil);
self.didShowDisconnectionWarning = NO;

self.backgroundTask = [application beginBackgroundTaskWithExpirationHandler: ^{
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Background task expired");
if (self.backgroundTimer)
{
[self.backgroundTimer invalidate];
self.backgroundTimer = nil;
}
[application endBackgroundTask:self.backgroundTask];
self.backgroundTask = UIBackgroundTaskInvalid;
});
}];

dispatch_async(dispatch_get_main_queue(), ^{
self.backgroundTimer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(timerUpdate:) userInfo:nil repeats:YES];
});

}


- (void) timerUpdate:(NSTimer*)timer {
UIApplication *application = [UIApplication sharedApplication];

NSLog(@"Timer update, background time left: %f", application.backgroundTimeRemaining);

if ([application backgroundTimeRemaining] < 60 && !self.didShowDisconnectionWarning)
{
UILocalNotification *localNotif = [[UILocalNotification alloc] init];
if (localNotif) {
localNotif.alertBody = @"Background session will expire in one minute.";
localNotif.alertAction = @"OK";
localNotif.soundName = UILocalNotificationDefaultSoundName;
[application presentLocalNotificationNow:localNotif];
}
self.didShowDisconnectionWarning = YES;
}
if ([application backgroundTimeRemaining] < 10)
{
// Clean up here
[self.backgroundTimer invalidate];
self.backgroundTimer = nil;

[application endBackgroundTask:self.backgroundTask];
self.backgroundTask = UIBackgroundTaskInvalid;
}

}

最佳答案

我相信您唯一的选择是使用远程通知。您需要您的应用程序为它们注册,并需要您的服务器检测您的应用程序何时未运行(即通过套接字连接),然后发送通知。

关于ios - 如何在后台保持 iphone ios websocket 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24468116/

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