美文网首页ios菜鸟收集区
iOS-42-苹果推送路由的设计思考

iOS-42-苹果推送路由的设计思考

作者: 小东门儿 | 来源:发表于2019-05-30 11:07 被阅读2次

前记

公司现在的APP需要集成推送,并根据推送事件指定跳转到相应的页面位置,而且还需要传递参数。

思考

现有的设计思路中可以结合组件间通信来做处理。

实现

通过路由链接或者字典传递。

样例demo

//        {
//            "router":"web",
//            "action":"",
//        param:{
//            "url":"https://www.jianshu.com/p/8b6b40198473",
//        }
//        }

//        {
//            "router":"app",
//            "action":"",
//        param:{
//            "a":"123",
//            "b":"cici",
//            "c":"nv",
//        }
//        }

router:主要是区分接收跳转后的跳转逻辑,app 项目内部跳转,web 跳转外部浏览器。
action:如果是app内部跳转,action就是相应的要跳转到的页面控制器名称
param:很明白就是跳转携带的参数

获取跟控制器

一般我们的项目都会有tabbar,直接获取tabbar的首页,直接作为跟控制器。

获取目标控制器

直接根据控制器名称生成控制器

- (NGBaseViewController*)applinkVC
{
    id resultVC = nil;
    NSString* className = self.moduleName;
    Class pushVCClass = NSClassFromString(className);
    BOOL isSubClass = [pushVCClass isSubclassOfClass:[NGBaseViewController class]];
    if (isSubClass) {
        resultVC = (NGBaseViewController*)[[pushVCClass alloc] init];
    }
    return resultVC;
}

提交参数

unsigned int outCount = 0;
            objc_property_t * properties = class_copyPropertyList(pushVC.class , &outCount);
            for (int i = 0; i < outCount; i++) {
                objc_property_t property = properties[i];
                NSString *key = [NSString stringWithUTF8String:property_getName(property)];
                NSString *param = parameters[key];
                if (param != nil) {
                    [pushVC setValue:param forKey:key];
                }
            }

跳转

直接根据跟控制器和目标控制器跳转即可
demo下载地址 欢迎start
github:https://github.com/hbbdsqd/Router

相关文章

  • iOS-42-苹果推送路由的设计思考

    前记 公司现在的APP需要集成推送,并根据推送事件指定跳转到相应的页面位置,而且还需要传递参数。 思考 现有的设计...

  • iOS路由设计思路

    前言 iOS解耦方案大部分是通过路由,由此出现了各种不同的路由设计。在看过一些路由设计后,笔者对路由引发了一些思考...

  • 维修一台升级变砖的优酷路由宝

    请问各位前辈优酷路由宝升级失败变砖如何修复。优酷路由宝谁用谁伤心啊,脑残的设计。设计啥自动推送,用户都不知道系统在...

  • 泛谈iOS 通知服务

    APNs 说起苹果设备的push推送服务就要提到苹果公司伟大的一个架构设计 APNs(Apple Push Not...

  • iOS---推送

    推送,一种是苹果,一种是通过第三方推送。一、苹果推送 首先苹果发送推送 用户可以选择是否允许推送消息,如果选择允许...

  • 苹果推送

    首先借鉴极客学院的教程图 再次在苹果开发网站进行配置推送证书,得到服务器和手机的证书, 1)注册 UIUserNo...

  • iOS推送通知(极光推送)

    写在前面 要实现推送功能先要有苹果的推送证书:如何创建苹果推送证书要使用极光推送的功能,需要先集成极光推送SDK ...

  • 可玩性和实用性能兼顾吗?——小米路由器mini初体验

    作者:路安 小米路由器mini外观和苹果的某款键盘设计有点像,记得小米路由器mini初期预热海报很多人都以为小米要...

  • 手撸博客3 文章列表及文章

    1 设计思路 1.1 路由设计 /article路由到文章列表页面/article/aid路由到具体的文章页面 1...

  • 苹果推送服务

    UserNotifications.framework 简介 Apple Inc在IOS10中引入该框架,给与了用...

网友评论

    本文标题:iOS-42-苹果推送路由的设计思考

    本文链接:https://www.haomeiwen.com/subject/jgdmtctx.html