Очевидно, что есть много вариантов, связанных с дизайном / подходом.
Я делал это несколько раз (с приложениями, живущими в магазине приложений), и на самом деле это похоже на разработку любой платформы.
Первый: AppDelegate
. Самый простой способ обойти это - иметь подкласс AppDelegate
приложения в вашей платформе AppDelegate
:
@UIApplicationMain class ParentAppDelegate: FrameworkAppDelegate { }
Просто убедитесь, что приложение вызывает super
для всех соответствующих методов.
Второе: Зависимости. Это, наверное, самая раздражающая часть, так как Frameworks не может встраивать другие фреймворки. Но у вас все еще есть несколько простых вариантов:
- Вложите в приложение необходимое фреймворк
- Добавьте источники необходимой инфраструктуры непосредственно в вашу инфраструктуру.
- Используйте менеджер зависимостей (например, cocoapods ), который позаботится об этом за вас.
Другие проблемы: Одна ловушка, с которой вы можете легко столкнуться, работает с Пакетами. Каждый раз, когда вы динамически загружаете изображения / строки / ссылки на IB / и т. Д. вам нужно будет указать, что вы используете комплект Framework , поскольку иногда он может по умолчанию использовать комплект приложения . Самый простой способ сделать это с этим init , например. Bundle(for: self.self)
Также имейте в виду, что родительское приложение должно будет добавить настройки в info.plist
и права, необходимые для вашей платформы.
Общие комментарии по подходу: Мой совет (примите это или оставьте ☺️) будет осторожным при добавлении вашей полной заявки в заявку клиента. Помимо проблем с IP и App-Review, это может привести к значительному усложнению или развилке текущего приложения для его поддержки, что усложнит дальнейшее обслуживание.
Вместо этого я бы порекомендовал поместить только отдельные части приложения, которые требуются вашему клиенту, в отдельную среду, которую и you и ваш клиент использует для ваших отдельных приложений.