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 必须满足哪些条件才能向服务器发送活动?的主要内容,如果未能解决你的问题,请参考以下文章

计算机功能必须满足哪些要求才能被视为“单调”?

我可以在不安装 TestFlight 的情况下向自己发送 iPhone 应用吗

TestFlight 集成查询

TRON波场链介绍--搭建DAPP需要满足哪些条件?

TestFlight 设置 mvvmcross

申请文网文的要求及需要满足的条件