我将 Flutter 与 Google AdMob lib 一起使用,并有这个帮助器类
AdManager
(示例的一部分)来管理 ID。
class AdManager {
static String get bannerAdUnitId {
if (Platform.isAndroid) {
return 'ca-app-pub-TEST_ID';
} else if (Platform.isIOS) {
// return 'ca-app-pub-MY_APP_ID';
return 'ca-app-pub-TEST_ID';
}
throw UnsupportedError("Unsupported platform");
}
static String get nativeAdUnitId {
if (Platform.isAndroid) {
return 'ca-app-pub-TEST_ID';
} else if (Platform.isIOS) {
// return 'ca-app-pub-MY_APP_ID';
return 'ca-app-pub-TEST_ID';
}
throw UnsupportedError("Unsupported platform");
}
}
如何在编译过程中更改类的返回。我知道应该只在测试期间使用
ca-app-pub-TEST_ID
并仅在 PROD 版本中切换到真实 ID 'ca-app-pub-MY_APP_ID'。我怎样才能在包构建过程中做到这一点。
现在我只关注 iOS,所以我所做的就是打开 XCode 并手动构建存档。可能有自动构建的 Flutter 命令(是哪些?)以及在编译时定义 ID 的方法,因此我不必手动切换回来。使用 VSCode。
谢谢!
您也许可以使用口味来解决它:https://docs.flutter.dev/deployment/flavors
我们的想法是让每个构建都有自己的风格。
然后在运行时,您可以使用
appFlavor
常量检查编译后的风味:https://api.flutter.dev/flutter/services/appFlavor-constant.html
所以在实践中它会是这样的:
flutter build appbundle --flavor id1
然后在运行时您将检查
appFlavor
常量:
if (appFlavor == 'id1') {
return 'id-for-this-flavor';
}
我想这会解决你的问题。