使用Google Analytics for iOS无需.plist文件

5
根据谷歌文档(Analytics for iOS),他们要求您下载一些自动生成的.plist文件来配置您的应用程序。不幸的是,我有多个报告套件(Debug,Release),需要根据构建动态切换。因此,我正在尝试做以下两件事之一:
1.是否有一种方式可以完全放弃 .plist 文件并动态设置所有配置?需要哪些值?
-或者-
2.我能否更改 Google .plist 文件中的值,以使用项目的用户定义的构建设置变量?我尝试添加一个名为 GOOGLE_ANALYTICS_ID 的变量,并在 Google .plist 文件中引用它通过 ${GOOGLE_ANALYTICS_ID},但它没有像我期望的那样替换该值。
您是如何动态指示您的应用程序根据 Debug 或 Release 发送到不同的报告套件的?
2个回答

8
您应该能够放弃 .plist 文件并像这样设置它:
#import "GAI.h"
...
GAI *gai = [GAI sharedInstance];
[gai trackerWithTrackingId:@"your GA id"];
gai.trackUncaughtExceptions = YES;  // optional
gai.logger.logLevel = kGAILogLevelVerbose;  // optional - remove for release

不要使用GGLContext相关的内容,因为它试图从-plist文件中获取参数。


我可以确认此方法与此回答https://dev59.com/xWAf5IYBdhLWcg3w9Wiu#24112024结合使用是可行的。我使用了Swift,并将`trackUncaughtExceptions`设置为true, trackerWithTrackingIddispatchInterval - Patrick
非常感谢您的建议!我不知道为什么文档甚至没有提到这种方法!在发现这个选项之前,我一直在尝试使用运行脚本在构建阶段交换 plist 文件! - Nitin Alabur
确认在2017年仍然有效!然而,很烦人的是这没有被记录下来,并且只能从plist中设置一个字段,如clientID、API_KEY等不能设置,但对我来说,我所需要的只是跟踪,设置跟踪ID似乎就足够了。 - ssh88
1
有没有一种在Swift中完成相同事情的方法? - Hubert Solecki

0

遇到了同样的问题。我的解决方案是为QA和生产创建单独的构建目标,在代码中使用预处理器宏来进行目标特定设置,并使用2个单独的plist文件来处理Facebook应用程序ID、包ID等内容(您可以在项目设置的“信息”选项卡上指定哪个plist文件构建目标正在使用)。

GA也是如此-每个目标都有2个plist文件,为了避免命名冲突(因为如果您将plist名称从GoogleService-Info更改,应用程序将崩溃),只需将QA plist放在单独的文件夹中即可,它仍然可以正常工作。

不要搞乱你的plist的目标成员资格:)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接