TestFlight 必须满足哪些条件才能向服务器发送活动?
Posted
技术标签:
【中文标题】TestFlight 必须满足哪些条件才能向服务器发送活动?【英文标题】:What conditions must be met for TestFlight to send activities to the server? 【发布时间】:2013-08-23 14:51:15 【问题描述】:我试图理解:在 Android 上,TestFlight 如何确定它处于 beta-tester 环境中,并且应该将活动上传到 TestFlight 服务器? 有一些 similar questions 询问 ios 上的 TestFlight,但与 android 无关。
我已将TestFlight SDK 集成到我公司的 Android 应用程序中,因为它看起来是一个很好的 beta 测试和远程日志记录解决方案(我们已经将它用于 iOS),但我无法真正实现将会话信息发送到 TestFlight 服务器。通过 TestFlight 应用程序安装我的应用程序后,我立即看到它是通过 TestFlight Web 控制台安装的,然后……nada。我没有得到会话数据或远程日志,尽管我显然应该得到一些东西。
到目前为止我做了什么:
四次检查了我的 TestFlight api 密钥 确认TestFlight.takeOff()
正在被调用
验证TestFlight.isActive()
报告true
尝试使用仅调试密钥对 apk 进行签名
尝试使用我们的发布密钥对 apk 进行签名
检查 android 日志中与 TestFlight 相关的错误(无)
几天前联系了 TestFlight 支持(我已经联系过,但还没有进展)
我目前的猜测是 TestFlight 库认为它处于生产环境中,因此它不应该上传日志和会话信息。
SDK Documentation 无法回答这个问题,但我觉得如果我了解它在寻找什么条件,我可以很快确定这一点。
我查看了TestFlightLib.jar,发现TestFlight.isActive()
实际上只是报告你是否已经调用了TestFlight.takeOff()
,所以这并不能很好地表明整个系统是否正常工作。
【问题讨论】:
help.testflightapp.com 的友好人士对您的问题有何看法? 他们建议使用调试密钥重新签署应用程序,但没有任何区别。我已经通过 Twitter 和他们的电子邮件支持与他们进行了交流。 我应该补充一点,我还详细浏览了 TestFlight SDK 知识库,但没有任何运气。那里的绝大多数文章都是针对 iOS 的,而与 Android 相关的文章数量有限,并没有给我任何见解。 【参考方案1】:编辑:根据下面的Isra's answer,看来我的第一点(批处理检查点)可能不再有效。
在与 TestFlight 支持交易了几封电子邮件后,我看到了事件并且对正在发生的事情有了更好的了解。有两个问题:
TestFlight for Android 批处理 checkpoint
事件,并在收集到 10 个或更多事件后将它们发送到服务器。事件不会跨应用进程生命周期保留。我的测试应用只创建了两个或三个检查点,因此没有任何东西发送到服务器。
存在一个明显的问题,即日志事件根本不会发布到服务器,除非 TestFlight 会话以 TestFlight.endSession()
明确结束
因此,解决方法(目前)是定期显式调用TestFlight.endSession()
。希望 TestFlight 能够在库的未来版本中改变(或至少记录)这种行为。
【讨论】:
你是救生员。我花了大约 2 个小时试图弄清楚为什么没有日志条目。感谢您抽出宝贵时间联系他们的支持团队。 我已经浪费了两个多小时试图解决这个问题!我也是 android 的新手,这是试图让它发挥作用的双重打击。您多久调用一次 TestFlight.endSession()?之后需要直接调用 takeOff() 吗?任何帮助表示赞赏,我现在发现 android 语义比 IOS 困难得多:/ 发布此答案后,我很快就放弃了 TestFlight。我们转移到 Crashlytics 以获取远程日志记录和崩溃报告,我非常高兴。我强烈推荐他们。 Testflight 肯定会更新他们的文档 :) 在找到这篇文章之前,我至少尝试了一个小时。现在在我的应用暂停事件期间将 endSession 添加到我的 phonegap 应用。它开始出现在我的会话中。 @DrewShafer 你的回答给了我一些希望,但后来的评论似乎捕捉到了 TestFlight 是如何走下坡路的。在试图绕过它之后,我最终放弃了 TestFlight 转而使用 Crashlytics。可惜他们无法让集成变得不那么痛苦,尤其是在您很快就可以集成竞争对手的产品的时候!【参考方案2】:我将在检查站前发表评论。我可以看到立即报告检查点,而无需结束会话。看起来他们删除了Android 上的批处理
【讨论】:
【参考方案3】:我们通过在我们的活动 onStart 上调用 TestFlight.startSession() 和在 onStop 上调用 TestFlight.endSession() 使其工作.
TestFlight SDK 中没有记录额外的步骤,但它似乎强制应用将会话日志发送到 TestFlight 服务器。
【讨论】:
以上是关于TestFlight 必须满足哪些条件才能向服务器发送活动?的主要内容,如果未能解决你的问题,请参考以下文章