ios - 本地通知和(NSURLConnection后台下载)不起作用

标签 ios xcode background nsurlconnection uilocalnotification

我正在xcode 6上开发ios应用程序。

它基于使用NSUrlConnection下载pdf文件的基础。

当我在ios模拟器上运行该应用程序时,NSUrlConnection在后台完美运行,本地通知也是如此。

但是,当我在iPhone上构建并运行它时,当应用程序进入后台时,nsurlconnection会停止,并且不会显示本地通知。

有人可以指导我解决问题吗?

编辑:

我发现当应用程序进入后台时,请求可能会变得闲置。
但是,为什么这只会在iPhone上发生而在模拟器上却没有发生?

这是我的代码:

 NSURL *url = [NSURL URLWithString:[BookArray[0] objectForKey:@"Link"]];

    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:2.5];


    NSURLConnection *PDFConnection;


     PDFConnection = [[NSURLConnection alloc]initWithRequest:request delegate:self startImmediately:YES ];

最佳答案

如果您想在应用程序进入后台运行时继续下载,只需拨打beginBackgroundTaskWithExpirationHandler:

@property (nonatomic, assign) UIBackgroundTaskIdentifier backgroundTaskID;

@synthesize backgroundTaskID;

...

NSURL *url = [NSURL URLWithString:[BookArray[0] objectForKey:@"Link"]];

NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:2.5];


NSURLConnection *PDFConnection;


PDFConnection = [[NSURLConnection alloc]initWithRequest:request delegate:self startImmediately:YES ];

self.backgroundTaskID = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{

    [connection cancel];
}];



然后在您的委托方法中,完成下载后应调用endBackgroundTask:

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    // Error Handling
    ...

    [[UIApplication sharedApplication] endBackgroundTask:self.backgroundTaskID];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    // Downloaded 

    [[UIApplication sharedApplication] endBackgroundTask:self.backgroundTaskID];
}


您可以阅读here


并确保您已获得此answer中所述的安排通知的权限

关于ios - 本地通知和(NSURLConnection后台下载)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27080641/

相关文章:

ios - 当应用程序处于后台时,苹果是否允许声音检测?

ios - 在 iOS 10 中清晰和半透明的 UINavigationBar 状态之间的转换

ios - AdHoc Beta 测试的代码签名

iPhone OCR 无法识别所有捕获的图像文本,但可以识别预定义的文本图像

ios - NSObject代替头文件

background - 单点触控。旋转背景图片

ios - 使用searchController过滤tableView,但tableView没有更新

ios - 未找到 GoogleOpenSource/GoogleOpenSource.h 文件

android - 将视频从android流式传输到桌面

html - 使用 chrome 滚动时背景无法正确加载