如何处理和发送远程通知 Objective-C
Posted
技术标签:
【中文标题】如何处理和发送远程通知 Objective-C【英文标题】:How to handle and send remote notifications Objective-C 【发布时间】:2015-02-04 18:24:46 【问题描述】:我有一些问题一直在思考。我希望在这里得到他们的答复。
1) 根据设备上发生的情况,我向设备发送了许多推送通知。每个推送通知都用于不同的 ViewController。这样,我的意思是正在接收推送通知,其中包含 ViewController 需要使用的一些自定义数据。 那么最好的设置方法是什么,以便轻松共享通知中的数据?
2) 正如我之前所说,我有不同类型的通知。我现在这样做的方式是,我知道要为每个通知做什么,我这样发送它们:
data:
type: "4",
some other data....
所以每次收到通知时,我都有 if 语句来检查它是什么 type。这是一种合法/正确的方法还是有其他方法?
希望您能提供一些代码示例,特别是针对问题 1。
谢谢!!
【问题讨论】:
【参考方案1】:-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
是您放置条件的地方。
userInfo 字典是存储通知信息的地方。
例如,要获得您这样做的类型:
if([userInfo[@"aps"][@"type"] isEqualToString:@"4"])
//your custom code here
现在,当您收到远程通知时,您会希望像这样发送本地通知:
[[NSNotificationCenter defaultCenter] postNotificationName:@"yourMessage" object:nil];
然后在您的视图控制器中添加:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(yourCustomMethod) name:@"yourMessage" object:nil];
不要忘记在您的 viewWillDisappear:
方法中取消注册本地通知,如下所示:
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"yourMessage" object:nil];
希望对你有帮助,如果不清楚,请告诉我。
【讨论】:
很清楚只是一些问题。我应该把 addObserver 放在 ViewDidAppear 中,否则会出现对吗?还有第二个问题。假设我在 Viewcontroller A 中,并且我收到一个通知,说明该通知的类型将在 ViewController B 中使用。如果我说为 Viewcontroller B 设置一些属性值,它还会得到处理吗? 您必须将其放入 ViewWillAppear。由于您正在实施 removeObserver: 只有当前的 ViewController 会收到本地通知。因此,如果您在 ViewController A 中并且您收到一个针对 ViewController B 的通知,则不会发生任何事情。如果你不希望这种行为不要实现 removeObserver: 方法,但 ViewController B 应该已经初始化,以便它能够处理通知。 有没有办法从 viewController A 一开始就对其进行初始化? 可以使用instanceViewControllerWithIdentifier:方法 谢谢,我会努力实现的!以上是关于如何处理和发送远程通知 Objective-C的主要内容,如果未能解决你的问题,请参考以下文章
如何处理 Android 中远程视图的异常(自定义小部件或自定义通知)?