存在许多不同的用户场景,例如某些服务的授权、消息发送、打车、照片编辑、二维码扫描、搜索航班等。
通常服务会为其提供API以便与它们集成。其中一些提供了示例来展示如何在您的应用程序中集成它们。但是,开发者需要经常从头开始编写这样的API使用,或者使用第三方库来编写。
Scenario框架旨在简化您应用程序中的用户场景集成。例如,某个服务可以提供一个供您使用的场景,然后您作为应用开发者只需按下按钮即可启动该场景。或者,您可以创建一些方便的用户场景,并在不同的应用程序中重用它们。
Scenario框架的使用相当简单。它基于Scenario
协议,需要提供一种方法
func perfrom(from viewController: UIViewController, with parameters: ScenarioParameters?, callback: ScenarioResultCallback?)
人们认为用户场景应该从UIViewController
开始。用户场景可能希望有一些参数,比如授权令牌或颜色方案,以便更好地适应您的应用程序设计。这些参数取决于每个场景,可能不同。我们还认为您想要收到执行结果:如果以错误结束或者成功处理,或者可能返回用户在表单中填写的一些数据。在这种情况下,向场景发送回调句柄,它会被调用。
Scenario框架提供了一些方便的场景,以简化某些情况的处理,例如创建UINavigationController
ScenarioStartedFromNavigationViewController
- 检查是否是UINavigationController,然后场景会被推送到它或以模态方式展示。它要求实现初始化实现createInitialViewController
,ScenarioStartedFromModalViewController
- 为以模态方式启动用户场景而提供的方便场景模板。向它提供初始化视图控制器的createInitialViewController
方法。ScenarioList
- 是一种可以将您需要的所有场景存储的结构。它的目的是让您一次设置不同的场景参数(例如社交网络令牌)并在不同时间开始执行场景。您可能会考虑在应用程序启动时设置参数。之后,您可以按需启动场景。比如
scenarioList.performScenario(with: "Authorization", from: currentViewController)
无需再次提供参数。在该场景运行之前,仅创建其视图控制器,因此不需要占用大量内存来存储它们。
这种方法目前还处于初级阶段,因此某些API的用法可能会发生变化。但我们期望它尽可能简单,并为您提供方便地在应用中使用不同API的机会。非常欢迎您通过podspecs将您的场景添加到本存储库中。或者,添加到您存储库的链接,其中包含指向本readme文件的链接。