- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我们使用 Amazon SDK 2.4.2 版进行文件上传和下载。最近我们更新到 2.12.3。
在旧版本中,任何上传或下载任务都用于在后台内部启动 TransferService,处理网络连接监控等。
但为了支持Android 8限制后台服务的优化,在最新版本中,SDK已经停止在内部调用TransferService,并鼓励开发者显式调用。一个推荐的调用服务的地方是 Application 类的 onCreate。 TransferService 已缩减为仅作为另一个类 TransferNetworkLossHandler 的初始化程序,它扩展了 BroadcastReceiver,后者在连接发生变化时处理暂停/恢复下载。在旧版 SDK 和新版 SDK 中启动 TransferService 的一个主要区别在于,它更早地使用 startService 方法启动。但现在 Amazon 文档建议在 8.0 及更高版本的设备上使用带有 Notification 对象的“startForegroundService”开始。
我们的应用程序每晚都会在后台上传调试日志,无论当时是否正在使用该应用程序。 SDK 更新后,我们必须在 Oreo 设备上运行 TransferService 时强制设置通知。我们想使用 Aws SDK 上传日志,但不想显示通知,因为我们认为这会给我们的用户带来糟糕的体验。当用户启动应用程序时,仅调用不带通知对象的 startService 将起作用。但是当应用程序未运行或不在内存中时,我们的上传日志任务将被触发,该任务调用 Application 类的 onCreate ,后者又调用 startService 导致崩溃,因为 startService 无法在应用处于后台时调用。
为避免这种情况,我们尝试绕过 TransferService 的使用,并在 Application 类中自行初始化 TransferNetworkLossHandler。当应用程序正在使用或在内存中时,这似乎有效。但是如果我们刷出应用程序,后台调用时日志上传不起作用。日志也没有帮助。没有错误日志,我们正在获取正确的观察者 ID,但文件未上传到存储桶。
我们使用以下代码绕过 TransferService 并在 Application 类的 onCreate 中初始化 TransferNetworkLossHandler。
TransferNetworkLossHandler.getInstance(getApplicationContext());
为了在初始化后启动虚拟网络检查,我们使用
TransferNetworkLossHandler.getInstance(getApplicationContext()).onReceive(context, new Intent().setAction(ConnectivityManager.CONNECTIVITY_ACTION));
因此,基于网络连接,SDK 可以暂停或恢复下载。
有什么方法可以在8.0及以上的设备上使用Amazon SDK上传/下载而不使用通知?
此外,我们非常感谢与此类用例的最佳实践相关的任何链接。
最佳答案
registerReceiver(TransferNetworkLossHandler.getInstance(getApplicationContext()), new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
我将此代码放在我的应用程序类中或我需要监听网络更新的 Activity 中。
我有一个问题,当我处于离线状态时,我的上传会挂起在 WAITING_FOR_NETWORK 状态并且永远不会恢复。现在它工作正常。
来源: https://github.com/aws-amplify/aws-sdk-android/issues/899
关于android - Aws SDK 2.12.3 TransferService 使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55156841/
我已经实现了 AWS 核心和 S3 SDK 来处理文件上传。不幸的是,上传有时无法正常工作。 (它似乎只在 wifi 连接下,但我对此不是 100% 确定) 由于某些未知原因,aws 服务正在收到成功
尝试将一些图像上传到 AWS 的 s3 存储桶中。在 API 级别 26 以下工作正常但显示错误无法执行 HTTP 请求:超时来自 API 级别 26 及更高级别。 使用的 SDK: implemen
我们使用 Amazon SDK 2.4.2 版进行文件上传和下载。最近我们更新到 2.12.3。 在旧版本中,任何上传或下载任务都用于在后台内部启动 TransferService,处理网络连接监控等
我是一名优秀的程序员,十分优秀!