如何根据 API 响应触发应用内导航

Posted

技术标签:

【中文标题】如何根据 API 响应触发应用内导航【英文标题】:How to trigger in-app navigation based on API response 【发布时间】:2019-07-17 14:14:56 【问题描述】:

这个问题与 ios (swift) 和 android 相关。

我正在为我们的移动应用程序需要集成的横幅系统构建后端实现。一些横幅需要在按下时将用户重定向到应用程序的某个部分。

根据 API 调用中返回的数据触发路线导航的最佳做法是什么?

例如,JSON 中的横幅对象列表,其中键引用要导航到的页面 - 是否会在此处应用深度链接,应用程序创建可以通过传递字符串来引用的路由映射是否有意义?

我觉得这里必须有一个简单的解决方案,但我正在与之合作的移动团队似乎非常坚定。

【问题讨论】:

【参考方案1】:

在我当前的项目 (iOS) 中,我们使用深层链接将导航映射到我们应用的某个选项卡。因此,您可以通过 JSON 发送它,然后发布您的主控制器正在监听的通知(例如 TabBarController),然后选择要转到的所需索引或您需要的任何其他导航逻辑。

// 向 DeepLinkKit pod (https://github.com/button/DeepLinkKit) 注册深度链接

    self.router?.register("a/created/path")  link in
                if let link = link 
                    debugPrint("Router: \(String(describing: link.url))")
                    NotificationCenter.default.post(
                        name: Notification.Name(Configuration.App.kGoToSomewhere),
                        object: nil
                    )
                
            

或者只是从您的 JSON 中提取,然后设置通知

    call  URL in
      NotificationCenter.default.post(
                            name:   Notification.Name("ANotification"),
                            object: nil
                        )
    

然后在你的主控制器中

    class MainTabBarController: UITabBarController 
       func viewDidLoad() 
           super.viewDidLoad()
          NotificationCenter.default.addObserver(
                self,
                selector: #selector(selectTab),
                name: Notification.Name("ANotificaton"),
                object: nil
            )
    
    

func selectTab() 
 // Do your navigation logic here

希望对你有帮助!

【讨论】:

以上是关于如何根据 API 响应触发应用内导航的主要内容,如果未能解决你的问题,请参考以下文章

如果下游服务响应 401,如何在 Zuul API 网关中触发 OAuth2 身份验证

如何让键盘上的箭头键触发博客内的导航(上一页/下一页)链接

Android Geofences (Location Services) - 如何触发应用内事件

如何根据ios中的api响应时间向用户发送通知

如何开始使用 nextjs 获取每个应用程序的数据

Win10系列:JavaScript页内导航