Reputation: 61774
This is how I register object for FirebaseMessaging
:
container.register(Messaging.self) { _ in
return Messaging.messaging()
}
and then I need to use it:
container.register(NotificationSchedulerable.self) { resolver in
let userNotificationCenter = resolver.resolve(UNUserNotificationCenter.self)!
let messaging = resolver.resolve(Messaging.self)! //unexpectadly found nil
return NotificationScheduler(userNotificationCenter: userNotificationCenter, messaging: messaging)
}
But I receive an error:
Swinject: Resolution failed. Expected registration: { Service: FIRMessaging, Factory: Resolver -> FIRMessaging } Available registrations: { Service: FIRMessaging, Factory: Resolver -> FIRMessaging, ObjectScope: graph } Fatal error: Unexpectedly found nil while unwrapping an Optional value: file ToolsAssembly.swift, line 72
Why it happens?
Upvotes: 0
Views: 822
Reputation: 1204
Could I invite you to check a new fresh DIContainer for Swift?
In this lib, you can access your dependencies using a property wrapper.
@Injected(.githubService)
var githubService: FetchService
@Injected(.by(type: FetchService.self, withKey: "gitlab"))
var gitlabService: FetchService
@InjectedSafe
var externalService: ExternalSingletonService?
I hope it fits well with your necessities.
Upvotes: 1
Reputation: 71
You should call FirebaseApp.configure()
before resolving your dependencies.
Upvotes: 0
Reputation: 153
Maybe the problem is that you have to register a FIRMessaging instead Messaging
https://firebase.google.com/docs/cloud-messaging/ios/client?hl=es
Like this:
container.register(FIRMessaging.self) { _ in
return Messaging.messaging()
}
And then:
container.register(NotificationSchedulerable.self) { resolver in
let userNotificationCenter = resolver.resolve(UNUserNotificationCenter.self)!
let messaging = resolver.resolve(FIRMessaging.self)! //unexpectadly found nil
return NotificationScheduler(userNotificationCenter: userNotificationCenter, messaging: messaging)
}
Upvotes: 1