使用的是ios版的sdk,简单上传方式,代码从sample中抄来
OSSTask * task = [_client putObject:_putRequest];
[task waitUntilFinished];
在执行[task waitUntilFinished]时报出以下警告,但是文件还是正确上传了,
对于我有强迫症的人来说,下面这些警告太碍眼,请教各位大佬,问题出在哪里?
[NetworkInfo] Signal strength query returned error: Error
Domain=NSPOSIXErrorDomain Code=13 "Permission denied",
descriptor: <CTServiceDescriptor 0x28142a980, domain=1, instance=1>
万分感谢!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您描述的问题,您在使用iOS版OSS SDK进行简单上传操作时,尽管文件成功上传,但在执行[task waitUntilFinished]
方法时遇到了权限错误的警告信息。此警告信息表明应用尝试查询网络信号强度时被拒绝访问,这通常与系统权限或者相关API调用无关直接与OSS上传任务本身。不过,这样的警告确实可能影响开发者的体验。
问题描述: - 在使用iOS OSS SDK执行文件上传后等待任务完成([task waitUntilFinished]
)的过程中,控制台出现“Permission denied”错误,错误来源于网络信号强度查询。
可能原因: - 该警告可能是由于应用未被授予查询网络信号强度的权限,或者是系统限制了这一查询操作。 - 此问题与OSS上传任务的成功执行无直接关联,属于系统层面的权限或API调用问题。
解决步骤: 1. 确认无需查询信号强度:鉴于此警告不影响OSS上传功能,您可以选择忽略它,因为上传操作并不依赖于网络信号强度的查询结果。 2. 避免使用waitUntilFinished
:虽然此步骤不直接解决警告问题,但考虑使用异步处理而非阻塞主线程的方式可以提升用户体验。例如,利用continueWithBlock
来处理任务完成后的逻辑,这样可以避免阻塞UI线程,并且是iOS开发中推荐的做法。
[task continueWithBlock:^id(OSSTask *task) {
if (!task.error) {
NSLog(@"Upload success");
} else {
NSLog(@"Upload failed, error: %@", task.error);
}
return nil;
}];
Info.plist
添加相应的权限请求说明,并在代码中动态申请权限。但请注意,对于仅需进行文件上传至OSS的操作,此步骤并非必要。注意事项: - 虽然警告提示存在,但已确认文件上传成功,因此此警告对当前OSS上传任务的完整性没有影响。 - 避免在主线程使用阻塞式调用以保持应用响应性。
综上所述,该警告主要源于系统对网络信号强度查询的权限限制,对OSS上传任务并无实际影响。建议采用异步处理方式优化代码结构,并可考虑是否有必要处理网络状态查询相关的权限问题。