在 iOS 中接收推送消息
Receive Push Messages in iOS
要在iOS中接收推送消息,我使用以下方法:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler
这个方法在我的AppDelegate.m中。一切正常。我的问题是,这个方法是否可能不在 AppDelegate 中,而是在其他任何地方?!
不,这是不可能的,因为这是由 iOS 决定的。查看文档 here.
您可以做的是创建一个专用的 class(例如 PushNotificationHandler
)来处理您的推送通知并在 application:didReceiveRemoteNotification:fetchCompletionHandler:
中调用它。
使用 NSNotificationCenter,您可以轻松广播您的推送通知:
广播:
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
NSDictionary *userInfo = @{@"localNotification": notification};
[[NSNotificationCenter defaultCenter] postNotificationName:@"DOMyApplicationDidReceiveLocalNotification"
object:notification
userInfo:userInfo];
}
在需要的地方收听:
[[NSNotificationCenter defaultCenter] addObserverForName:@"DOMyApplicationDidReceiveLocalNotification"
object:nil
queue:nil
usingBlock:^(NSNotification *note)
{
UILocalNotification *localNotification = note.userInfo[@"localNotification"];
//...
}];
NSNotificationCenter 提供了多种监听方法,不仅仅是这里展示的基于块的。
要在iOS中接收推送消息,我使用以下方法:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler
这个方法在我的AppDelegate.m中。一切正常。我的问题是,这个方法是否可能不在 AppDelegate 中,而是在其他任何地方?!
不,这是不可能的,因为这是由 iOS 决定的。查看文档 here.
您可以做的是创建一个专用的 class(例如 PushNotificationHandler
)来处理您的推送通知并在 application:didReceiveRemoteNotification:fetchCompletionHandler:
中调用它。
使用 NSNotificationCenter,您可以轻松广播您的推送通知:
广播:
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
NSDictionary *userInfo = @{@"localNotification": notification};
[[NSNotificationCenter defaultCenter] postNotificationName:@"DOMyApplicationDidReceiveLocalNotification"
object:notification
userInfo:userInfo];
}
在需要的地方收听:
[[NSNotificationCenter defaultCenter] addObserverForName:@"DOMyApplicationDidReceiveLocalNotification"
object:nil
queue:nil
usingBlock:^(NSNotification *note)
{
UILocalNotification *localNotification = note.userInfo[@"localNotification"];
//...
}];
NSNotificationCenter 提供了多种监听方法,不仅仅是这里展示的基于块的。