识别Admob测试设备

11
我使用以下代码: let request: GADRequest = GADRequest() request.testDevices = ["xxxxxxx", kGADSimulatorID] 但我收到了下面的警告消息:

'testDevices' 已被弃用:请使用 GADMobileAds.sharedInstance.requestConfiguration.testDeviceIdentifiers。

我该如何修改代码来消除这个警告?

1
没有使用 request,我这样用,没有更多的警告了:GADMobileAds.sharedInstance().requestConfiguration.testDeviceIdentifiers = ["xxxxxx", kGADSimulatorID] as? [String] - Mahmut K.
5个回答

15

你应该使用这个:

GADMobileAds.sharedInstance().requestConfiguration.testDeviceIdentifiers = ["YOUR IDENTIFIER PRINTED ON DEBUGGER"]

不是:

request.testDevices = ["YOUR IDENTIFIER PRINTED ON DEBUGGER"]

你好,抱歉可以告诉我在我的代码中哪个位置需要使用:GADMobileAds.sharedInstance().requestConfiguration.testDeviceIdentifiers = ["YOUR IDENTIFIER PRINTED ON DEBUGGER"] 吗? - VyacheslavBakinkskiy
1
你可以在任何地方使用它,包括在ViewDidload中。 - Pietro Messineo

2

这是对10623169答案的修改。

要获取当前设备的有效ID,可在“testDevices”中设置,需获取此内容的MD5UIDevice.current.identifierForVendor?.uuidString

如果用户未授权跟踪,则asIdentifier值可能完全无效。但是,UIDevice.current.identifierForVendor是应用程序的有效UUID,将跨启动保持不变(但如果您删除应用程序并重新安装,则可能不会保持不变)。


2

Swift解决方案

发现可以通过计算MD5advertisingIdentifier来找到AdMob/GoogleAdManager deviceId。这样,您可以在代码中检索和使用测试deviceId,而无需先从控制台日志中获取设备标识符。

为了避免使用ObjC-Swift桥接头文件(通过<CommonCrypto/CommonCrypto.h>获取MD5),建议使用CommonCrypto框架的Swift包装器,例如:

使用上述框架(它添加了一个扩展属性到String用于计算MD5哈希值),查询非常简单:

GADMobileAds.sharedInstance().requestConfiguration.testDeviceIdentifiers ?? []).contains(ASIdentifierManager.shared().advertisingIdentifier.uuidString.md5)

1

3
需要真实设备。 - Mahmut K.
如果你不需要它,为什么要记录 "<Google> 要在此设备上获得测试广告,请设置:GADMobileAds.sharedInstance.requestConfiguration.testDeviceIdentifiers = @[ kGADSimulatorID ]; "? - Zaporozhchenko Oleksandr
是的,我知道我可以查看日志...但我想做的是构建一个内部使用的应用程序版本,并连接到我们的“QA”系统。因此,我希望所有内部测试我们应用程序的人都可以在其设备上看到测试广告。我不想在这个日志中要求我们的每个内部用户提供他们的设备ID,并将其硬编码到应用程序中的某个位置。我只希望运行“QA”应用程序版本的任何人都被视为“测试设备”。 - Dan Morrow

1
使用语法来消除警告:
GADMobileAds.sharedInstance.requestConfiguration.testDeviceIdentifiers

在Flutter中我应该在哪里使用它? - pavel

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