Latest 0.1
Homepage https://github.com/sagiwei/SGPush
License MIT
Platforms ios 6.0, requires ARC
Authors

为更好的处理远程推送提供一种可能

介绍

SGPush 将处理远程推送时所需的头文件引用、逻辑代码封装到 SGPushHandler 的子类中,当点击远程推送消息打开应用或应用开启状态下接收到远程推送消息时自动执行相应的处理逻辑。

结构

描述
SGPush 核心类,管理注册的SGPushHandler子类,接管系统接收到的远程推送消息
SGPushHandler 推送数据以及相应处理逻辑的封装类,请根据具体业务需求创建不同的子类并在executeFromViewController: 方法中实现推送处理逻辑,该类本身不可直接使用。
UIViewController+SGPush 提供canHandleRemotePush:方法,不同的视图控制器可根据需求选择是否处理推送消息

使用

1. 创建 SGPushHandler 子类

每一个子类实现一种远程推送类型的处理逻辑,在子类中重载 executeFromViewController: 方法实现推送处理逻辑。

这里我们假定实现了 MessagePushHandler 子类来处理用户的消息提醒,DefaultPushHandler 子类来为所有其他类型的推送提供默认处理。

2. 将子类注册到 SGPush 中

想要实现的子类发挥作用需要将它注册到 SGPush 中并与接收到的推送字典 userInfo 中的特定字段和值做绑定。这样当接收到的推送消息含有特定的字段或值时,SGPush 会调用执行相应的 SGPushHandler 子类处理逻辑。

application:didFinishLaunchingWithOptions: 方法中进行子类注册:

[SGPush registerPushHandlerClass:[MessagePushHandler class] forKeyPath:@"aps.messageId"];
[SGPush registerPushHandlerClass:[DefaultPushHandler class] forKeyPath:@"aps"];

3. 接管系统接收到的远程推送

application:didFinishLaunchingWithOptions: 中加入代码:

[SGPush handleRemotePush:launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]];

application:didReceiveRemoteNotification: 中加入代码:

[SGPush handleRemotePush:userInfo];

4. 测试

通过以上几部,当服务器向设备发送的推送内容如下时
{"aps":{"alert":"This is a test message.","messageId":100}}
SGPush 会创建 MessagePushHandler 对象并执行。若推送内容中没有 messageId 字段时,SGPush 会创建 DefaultPushHandler 对象执行推送处理逻辑。

更多

通过 SGPush 还可以实现更多灵活的推送处理方式,请参考 Demo 中的注释和 SGPush 源码注释。

Latest podspec

{
    "name": "SGPush",
    "version": "0.1",
    "summary": "A nice way to handle iOS remote push notifications with just a few code.",
    "description": "tt   SGPush u5c06u5904u7406u8fdcu7a0bu63a8u9001u65f6u6240u9700u7684u5934u6587u4ef6u5f15u7528u3001u903bu8f91u4ee3u7801u5c01u88c5u5230 SGPushHandler u7684u5b50u7c7bu4e2duff0cu5f53u70b9u51fbu8fdcu7a0bu63a8u9001u6d88u606fu6253u5f00u5e94u7528u6216u5e94u7528u5f00u542fu72b6u6001u4e0bu63a5u6536u5230u8fdcu7a0bu63a8u9001u6d88u606fu65f6u81eau52a8u6267u884cu76f8u5e94u7684u5904u7406u903bu8f91u3002n",
    "homepage": "https://github.com/sagiwei/SGPush",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "authors": {
        "sagiwei": "[email protected]"
    },
    "social_media_url": "http://weibo.com/sagiwei",
    "platforms": {
        "ios": "6.0"
    },
    "source": {
        "git": "https://github.com/sagiwei/SGPush.git",
        "tag": "v0.1"
    },
    "source_files": "SGPush/*.{h,m}",
    "requires_arc": true
}

Pin It on Pinterest

Share This