I'm trying to use remote config values when I start my app.
The objective of this remote config is get the "url" and "key" of my db
This is my main.dart
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Future.wait([
Firebase.initializeApp(),
]);
await RemoteConfig().start();
runApp(ModularApp(
module: AppModule(),
child: const AppWidget(),
));
}
In my main.dart I call the RemoteConfig().start, this call this function in this class
import 'package:firebase_remote_config/firebase_remote_config.dart';
import 'package:flutter/services.dart';
import 'package:flutter_modular/flutter_modular.dart';
class RemoteConfig {
late FirebaseRemoteConfig _firebaseRemoteConfig;
RemoteConfig._internal();
static final RemoteConfig _singleton = RemoteConfig._internal();
factory RemoteConfig() => _singleton;
Future<void> start() async {
_firebaseRemoteConfig = FirebaseRemoteConfig.instance;
await _firebaseRemoteConfig.setConfigSettings(
RemoteConfigSettings(
fetchTimeout: const Duration(seconds: 30),
minimumFetchInterval: const Duration(minutes: 1),
// minimumFetchInterval: const Duration(days: 30),
),
);
await _firebaseRemoteConfig.fetchAndActivate();
}
Future<void> forceFetch() async {
try {
_firebaseRemoteConfig = FirebaseRemoteConfig.instance;
await _firebaseRemoteConfig.setConfigSettings(
RemoteConfigSettings(
fetchTimeout: const Duration(seconds: 30),
minimumFetchInterval: Duration.zero,
),
);
await _firebaseRemoteConfig.fetchAndActivate();
} on PlatformException catch (exception) {
Modular.to.navigate("/error");
throw exception.toString();
} catch (error) {
Modular.to.navigate("/error");
throw ("Erro ao buscar Configuração Remota");
}
}
getValueOrDefault({
required String key,
required dynamic defaultValue,
}) {
switch (defaultValue.runtimeType) {
case String:
var firebaseValue = _firebaseRemoteConfig.getString(key);
return firebaseValue != "" ? firebaseValue : defaultValue;
case int:
var firebaseValue = _firebaseRemoteConfig.getInt(key);
return firebaseValue != 0 ? firebaseValue : defaultValue;
case bool:
var firebaseValue = _firebaseRemoteConfig.getBool(key);
return firebaseValue != false ? firebaseValue : defaultValue;
case double:
var firebaseValue = _firebaseRemoteConfig.getDouble(key);
return firebaseValue != 0.0 ? firebaseValue : defaultValue;
}
}
}
And, this is the error that I get when I try to run the macOS app (iOS and Android it's okay)
Restarted application in 461ms.
flutter: AppModule started!
flutter: -- SplashModule INITIALIZED
flutter: -- HomeModule INITIALIZED
flutter: -- SplashModule DISPOSED
flutter: -- LoginModule INITIALIZED
flutter: -- HomeModule DISPOSED
flutter: [firebase_remote_config/internal] Failed to get installations token. Error : Error Domain=com.firebase.installations Code=0 "Underlying error: The operation couldn’t be completed. SecItemAdd (-34018)" UserInfo={NSLocalizedFailureReason=Underlying error: The operation couldn’t be completed. SecItemAdd (-34018), NSUnderlyingError=0x150998e50 {Error Domain=com.gul.keychain.ErrorDomain Code=0 "SecItemAdd (-34018)" UserInfo={NSLocalizedFailureReason=SecItemAdd (-34018)}}}.
#0 StandardMethodCodec.decodeEnvelope
#1 MethodChannel._invokeMethod
<asynchronous suspension>
#2 MethodChannelFirebaseRemoteConfig.fetchAndActivate
<asynchronous suspension>
#3 FirebaseRemoteConfig.fetchAndActivate
<asynchronous suspension>
#4 Remoteconfig.forceFetch
<asynchronous suspension>
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Erro ao buscar Configuração Remota
#0 Remoteconfig.forceFetch
<asynchronous suspension>
flutter: -- LoginModule DISPOSED
flutter: -- HomeModule INITIALIZED
flutter: -- LoginModule INITIALIZED
flutter: -- HomeModule DISPOSED
flutter:
flutter: -- HomeModule INITIALIZED
flutter: -- LoginModule DISPOSED
Lost connection to device.
Exited
And this is my pubspec.yaml
environment:
sdk: ">=2.17.0 <3.0.0"
dependencies:
cupertino_icons: ^1.0.5
flutter:
sdk: flutter
flutter_modular: ^5.0.3
mobx: ^2.1.0
flutter_mobx: ^2.0.6 4
shared_preferences: ^2.0.15
url_launcher: ^6.1.5
lottie: ^1.4.3
flutter_svg: ^1.1.5
dio: ^4.0.6
google_fonts: ^3.0.1
appwrite: ^8.1.0
firebase_core: ^1.23.0
firebase_analytics: ^9.3.6
firebase_remote_config: ^2.0.18
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^2.0.1
mobx_codegen: ^2.0.7 3
build_runner: ^2.2.1
modular_test: ^2.0.0
flutter_native_splash: ^2.2.10
icons_launcher: ^2.0.5
CodePudding user response:
That error code SecItemAdd (-34018) is regarding keychain sharing entitlements. If you follow these instructions, I believe the error should go away: https://stackoverflow.com/a/38543243/5681607