SDK错误处理机制
在集成SDK进行初始化、广告加载、展示的过程中,如果发生任何的异常或操作失败,如广告无填充、展示失败等,SDK都会在回调接口的失败事件中返回对应的错误信息,包括错误码和错误消息,来指示当前问题的具体原因。
如,初始化操作是通过InitCallback回调接口的onError事件方法,而广告展示操作则是通过各个广告单元的Listener回调接口,如激励视频的RewardedVideoListener 回调接口,通过回调事件方法onRewardedVideoAdShowFailed来通知激励视频加载展示过程中可能出现的失败,事件的唯一参数error是一个Error类的对象,从中解析到错误码和错误消息。具体参见Android SDK下载与集成和广告单元。
由于激励视频和插屏广告由智能库存引擎自动加载和缓存广告,没有load方法和对应的事件回调,广告加载相关的失败提示通过SDK日志返回,您可以在日志中获取到错误码和错误消息。
错误码
错误码和对应的错误原因说明:
错误码 | 错误消息 | 描述 |
初始化相关 | ||
111 | invalid request | 初始化请求无效,可能原因是无效的参数(如AppKey错误)或SDK配置错误(如Manifest.xml文件配置错误) |
121 | network error | 无网络连接 |
131 | server error | 服务器响应码非 200 |
132 | server error | 服务器返回数据体为空 |
133 | server error | SDK解析数据失败,可能是服务器返回数据格式不正确 |
135 | server error | 服务器响应失败或无响应,可能原因是网络不佳导致消息传输出错,或服务器内部错误 |
151 | unknown internal error | 不可预见的异常,如Activity被销毁导致的失败 |
加载相关 | ||
211 | Invalid request | 加载请求无效,可能原因是无效的参数(如placementID 错误)或SDK配置错误(如Manifest.xml文件配置错误) |
221 | network error | 无网络连接 |
231 | server error | 服务器响应失败或无响应,可能原因是网络不佳导致消息传输出错,或服务器错误 |
241 | No ad fill | 请求已成功送达,但没有可用广告 |
242 | SDK not initialized | SDK 未初始化,请先初始化SDK再加载广告 |
243 | reached request cap | 广告请求达到频次控制的限制 |
244 | missing AdNetwork SDK/Adapter | 缺少第三方平台SDK或adapter包导致该instance初始化和加载广告失败 |
245 | adapter returned an error or no fill | 第三方平台返回广告加载失败或无填充 |
251 | unknown internal error | 不可预见的异常,如Activity被销毁导致的失败 |
展示相关 | ||
311 | invalid request | 展示广告时存在scene参数错误的问题 |
341 | ad not ready | 没有可用的广告。展示广告前调用isReady检查库存可避免此错误 |
342 | SDK not initialized | SDK未初始化。在加载展示广告前需要先初始化SDK |
343 | reached scene impression cap | 达到了广告展示的频次控制的限制 |
345 | failure | 展示广告失败 |
351 | unknown internal error | 不可预见的异常,如Activity被销毁导致的失败 |
诊断
1. 错误码 111 - SDK init: invalid request
诊断:在进行sdk初始化方法init调用时收到”SDK init: invalid request“的失败回调,意味着当前初始化请求存在问题且没有被有效的发出,一般是由于方法调用的参数存在错误或SDK所需的运行环境(如manifest文件的权限配置)存在错误导致,建议根据帮助文档Andrdoid SDK下载与集成对初始化方法的参数和环境配置进行检查确认。可能存在问题的地方有:
- 无效的AppKey参数:请检查appkey参数格式与内容是否正确,确定所使用的参数与您在OpenMediation UI 前台申请的AppKey完全一致。
- Activity无效:请传入一个合法存在的activity对象作为初始化方法的参数,建议在Activity的onCreate事件中进行sdk初始化操作。参考帮助中心 Android SDK下载与集成的初始化部分。
- WebView not supported:当前设备不支持WebView,OpenMediation 广告依赖WebView展示。处理方法:请更换设备重试,确保设备支持WebView
- AndroidManifest.xml中缺少必须的权限设置:请检查是否添加了INTERNET和ACCESS_NETWORK_STATE权限,SDK需要此两个权限访问网络。处理方法:请在AndroidManifest.xml配置文件中添加这两个权限,具体参考帮助中心 Android SDK下载与集成的更新AndroidManifest.xml配置 部分内容。
2. 错误码 121 - SDK init: network error
诊断: 在进行sdk初始化方法init调用时收到”网络错误“的回调,意味着您当前的设备没有互联网连接。
解决办法:建议检查设备并打开wifi或蜂窝网络(并确保设备内SIM卡是可用的),以确保设备具有有效的互联网连接
3. 错误码151 - SDK init: unknown error
诊断:在进行sdk初始化方法init调用时收到”未知错误“回调,意味着程序中存在未知的错误,如activity被destroy,或其他未知的运行时异常。
解决办法:
- 首先检查app是否在初始化期间对activity做了destroy操作。不要将临时的activity对象作为参数传递给SDK,或者在初始化过程中对activity进行finish或destroy操作。SDK的初始化过程包括对第三方mediation network SDK的初始化操作,整个过程都会需要一个合法存在的activity对象,如果使用了临时的activity对象,极可能在未完成初始化的时候就destroy或finished了,就会产生UnKnownException。
- 确认activity对象为非临时对象且未进行destroy操作之后,如果问题依旧存在,请联系我们的技术支持,通过email或ticket方式,上传日志和设备、媒体相关信息。
4. 错误码131 - SDK init: server error
诊断:初始化时收到”服务器响应失败“回调,可能网络不稳定导致向服务器请求初始化时出错,AppKey 不正确或服务器发生内部错误。
解决办法:请检查网络后重新尝试。如果问题依旧存在,请联系我们的技术支持,通过email或ticket方式,上传日志和设备、媒体相关信息。
**********广告加载相关错误码************
5. 错误码241 - Ads loading: No ad fill
诊断:请求成功,没有广告可用。服务器没有返回可用的instance,需要检查mediation rule设置,确认waterfall中有active的instance或weight设置不为0。可能您没有配置任何mediation rules,OpenMediation 在当前地区也没有合适的广告可填充。也可能当前设备或媒体的服务受到限制,需检查publisher账号状态、app状态、设备的广告追踪设置、SDK版本等。
解决办法:请按下面步骤逐步操作并尝试
- 请检查并确认app是否处于激活状态。如app被删除或暂停服务,请联系我们的技术支持,可通过email或ticket方式,务必填写设备和媒体相关信息,并上传SDK日志。
- 如果您使用了聚合功能,请检查mediation rules配置,确保至少有一个active的instance,并且instance的weight不能为0
- 分别尝试更换设备、更换IP地址、切换wifi等操作后进行请求,或将当前设备添加到测试模式中,以排除特定设备、投放地域和网络的限制,如该设备设置了限制广告跟踪,或当前地域无匹配广告。
- 请更新最新版的SDK再进行尝试,以排除低版本SDK被限制服务的情况
- 如果问题依旧存在,请联系我们的技术支持,可通过email或ticket方式,务必填写设备和媒体相关信息,并上传SDK日志。
6. 错误码242 - Ad loading: SDK not initialized
诊断:App未对SDK进行初始化调用,无法进行加载广告操作,App应首先调用SDK的init()方法并确保成功后才能进行广告的加载和展示。
解决办法:请检查代码是否在合适的时候进行了SDK的初始化调用。我们建议在应用的activity的onCreate事件中进行sdk初始化操作,并确保未使用临时的activity或未对activity进行destroy操作。参考帮助中心 Android SDK下载与集成的初始化部分。
7. 错误码243 - Ad loading: reached impression cap
诊断:当前广告请求因展现广告数已达到频次控制的限制。
解决办法:请在 OpenMediation 开发者前台检查广告位和instance的频次控制设置,按设置的频次和间隔进行广告请求,或解除频次控制后再次尝试。
8. 错误码244 - Instance loading failure: missing AdNetwork SDK/Adapter
诊断:WaterFall中 instance 所需的 AdNetwork SDK 或 Adapter 没有集成
解决办法:添加缺失的第三方平台的 SDK 和 Adapter,参考帮助中心 Add Mediation Networks 向导内容完成所需平台的 SDK 和 adapter 的集成。
9. 错误码245 - Instance loading failure: adapter returned an error
诊断:Instance广告加载失败,具体原因请依据日志中第三方平台sdk返回的错误信息进行判断
解决办法:根据返回的adn加载失败信息,查阅第三方平台的帮助文档,获得解决问题的方法。一般性的解决方法为如下:
- 如果返回nofill 类型的错误: 尝试更换设备、更换IP地址、切换wifi等操作后进行请求,或将当前设备添加到该平台的测试模式中,以排除特定设备、投放地域和网络的限制。
- 如果在实际运营中该平台的填充率较低,可以尝试降低该instance的底价,如果该问题依旧存在,建议更换其他平台
- 如果返回频次受限,则请放宽该平台广告的加载频次控制
- 如果返回平台内部错误,如超时或无效响应、请求广告出错、网络加载数据出错、服务器未知错误等,且多次尝试问题依旧,则建议更换其他平台尝试,或等平台恢复稳定后再次尝试。
- 如果返回其他错误,如参数错误、无效的请求等,请通过email或ticket方式联系我们技术支持,上传日志和设备、媒体相关信息,帮助排查问题。
**********广告展示相关错误码************
10. 错误码:341
诊断:无广告可显示
解决办法:当前库存无广告,请等待onavailable事件通知。您可以在每次展示广告前通过isReady()接口检查库存情况,提前获取库存情况,便于应用根据库存情况调整广告场景。
11. 错误码:343
诊断:当前场景已达到当前会话的频次控制上限,展示被限制
解决办法:检查您在广告位设置的scene的频次和步长,确认是否正常。
12. 错误码:311
诊断:scene参数填写错误。
解决办法:检查您在广告位设置的scene列表,确认代码中所填scene名字与前台配置是否一致。如果您没有设置任何scene,则可以忽略这个错误。
13. 错误码:351
诊断:未知异常。在进行广告展示时收到”未知错误“回调,意味着程序中存在未知的错误,如activity被destroy,或其他未知的运行时异常。
解决办法:请参考错误码151解决。
14. 错误码:345
诊断:展示广告失败。
解决办法:对于 OpenMediation 的广告,请联系我们技术支持。如果是第三方平台的广告展示失败,请参阅第三方平台帮助文档。
评论
文章评论已关闭。