5
NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];

@synchronized (session)
{
    [[session downloadTaskWithURL:attachmentURL
                completionHandler:^(NSURL *temporaryFileLocation, NSURLResponse *response, NSError *error) {
                    if (error != nil) {
                        NSLog(@"error.localizedDescription %@", error.localizedDescription);
                    } else {
                        NSFileManager *fileManager = [NSFileManager defaultManager];
                        NSURL *localURL = [NSURL fileURLWithPath:[temporaryFileLocation.path stringByAppendingString:fileExt]];
                        [fileManager moveItemAtURL:temporaryFileLocation toURL:localURL error:&error];

                        NSError *attachmentError = nil;
                        attachment = [UNNotificationAttachment attachmentWithIdentifier:@"" URL:localURL options:nil error:&attachmentError];
                        if (attachmentError) {
                            NSLog(@"attachmentError.localizedDescription %@", attachmentError.localizedDescription);
                        }
                    }
                    completionHandler(attachment);
                }] resume];
}

我正在使用 FCM 进行推送通知。

{
"to": "ffHjl2CblrI...",
"data": {
    "message": "Offer!",
    "image": "https://media.giphy.com/media/l4lR0Q5u91kTNJPsA/giphy.gif",
    "url": custom url,
    "mediaType": "gif",
    "type": "notification type"
},
"notification": {
    "body": "Body",
    "sound": "default",
    "title": "Title"
},
"content_available": true,
"mutable_content": true
}

这是我的有效载荷内容。

我正在使用上面的代码 NotificationExtension 来从推送通知中下载数据。

我得到了开发者证书的成功响应。如果我检查生产证书(使用以前的证书更新),我会收到这样的错误

__NSCFLocalDownloadFile: error 2 creating temp file: /private/var/mobile/Containers/Data/PluginKitPlugin/7D6B57B4-DC4D-4F3E-8113-C8469BA66BBB/tmp/CFNetworkDownload_NQQfGi.tmp

如果我删除该应用程序并再次运行它正在工作。但是如果我用新的 IPA 更新版本,它不会在通知中显示图像。

我想念的是证书问题吗?是应用权限问题吗?

我正在为UNNotificationServiceExtension.

更新

还检查了APNS是否也无法正常工作。

关于APNS和有效负载内容的更多代码和解释

  1. Richmedia 通知通知在生产证书中不起作用

  2. 更新 IPA 后,丰富的推送通知无法正常工作(相同的 IPA 被覆盖)

4

1 回答 1

0

我遇到了这个错误,它属于PESIXErrorDomain并且我很确定它是一个 iOS 错误,可能是在 iOS 10 中与其他错误一起引入的。

我实施的解决方法是使当前会话无效,启动一个新会话并使用获取的恢复数据的新会话启动一个新的下载任务。

于 2017-03-24T08:56:30.960 回答