NPLRemoteNotificationManager 1.0.3

NPLRemoteNotificationManager 1.0.3

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布最新发布2014年12月

Nick Lee 维护。



在 iOS 应用中响应推送通知通常需要 a) 使用 NSNotificationCenter 或 b) 在其代理中维护对与应用无关部分的引用。这可能是更好的,因为您不必做这两者中的任何一个,也不必传递字典。

用法

NPLRemoteNotification 的子类化

您必须为您希望处理的每种通知类型创建 NPLRemoteNotification 的一个子类。通过重写 +keyPathsToNotificationKeys 通知将 userInfo 映射到您子类的属性。

MyNotification.h

#import <NPLRemoteNotificationManager/NPLRemoteNotification.h>

@interface MyNotification : NPLRemoteNotification

@property (nonatomic, strong) NSString *myProperty;

@end

MyNotification.m

#import "MyNotification.h"

@implementation MyNotification

+ (NSDictionary *)keyPathsToNotificationKeys
{
    return @{
                @"myProperty" : @"server_property"
             };
}

@end

配置您的应用

注册您的子类

为了正确处理通知,您必须将 NPLRemoteNotification 的子类注册到 NPLRemoteNotificationManager 单例。

示例应用程序委托

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    ...

    [[NPLRemoteNotificationManager sharedManager] registerNotificationClass:[MyNotification class]];

    ...

}

处理通知

只需将通知转发到 NPLRemoteNotificationManager 单例。通知的类将自动根据您在 NPLRemoteNotification 子类上的 +keyPathsToNotificationKeys 中提供的键路径推断出来。

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{

    BOOL result = [[NPLRemoteNotificationManager sharedManager] handleNotificationWithUserInfo:userInfo applicationState:[application applicationState]];

    if (!result) {
        NSLog(@"Received unknown notification");
    }
}

添加观察者

对这些通知的响应非常简单。只需在需要通知的类的实例上实现 NPLRemoteNotificationObserver 并将其注册到 NPLRemoteNotificationManager 单例。

示例视图控制器

#import "MyViewController.h"
#import <NPLRemoteNotificationManager/NPLRemoteNotificationManager.h>
#import "MyNotification.h"

@implementation MyViewController

- (void)viewDidLoad 
{
    [super viewDidLoad];

    [[NPLRemoteNotificationManager sharedManager] addObserver:self forNotificationClass:[MyNotification class]];
}

- (void)dealloc
{
    [[NPLRemoteNotificationManager sharedManager] removeObserver:self];
}

@end

#pragma mark - NPLRemoteNotificationObserver

- (void)notificationManager:(NPLRemoteNotificationManager *)manager 
       receivedNotification:(NPLRemoteNotification *)notification 
           applicationState:(UIApplicationState)applicationState
{
    if ([notification isKindOfClass:[MyNotification class]]) {
        MyNotification *myNotification = (MyNotification *)notification;

        // Do what you want with it

        NSLog(@"lulzzzzzz: %@", [myNotification myProperty]);
    }
}

安装

作者

Nick Lee, [email protected]

许可

NPLRemoteNotificationManager 在 MIT 许可下提供。有关更多信息,请参阅 LICENSE 文件。