Фреймворк должен работать независимо, без привязки к вашему текущему приложению.
Лучший способ добиться этого - использовать шаблон делегата для вашего приложения, чтобы реагировать на события, инициируемые платформой. Пример ниже для пользователя, входящего в приложение
Таким образом, вы можете сделать что-то вроде этого:
protocol ABCFrameworkProfileDelegate: AnyObject {
func userDidLogin()
func authenticationFailed(withError: Error)
}
Затем в вашем приложении:
import ABCFramework
// maybe on button tap?
let authService = ABCAuthService()
authService.login(username: "user", password: "pwd")
// once the login request completes either this or the failed method should be called.
func userDidLogin() {
let vc = FirstViewController()
push(vc, animated: true)
}
Таким образом, вашПриложение может управлять тем, какие представления показывать, основываясь на том, какие события происходят.