Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何处理和发送远程通知Objective-C_Ios_Objective C_Iphone_Notifications_Push Notification - Fatal编程技术网

Ios 如何处理和发送远程通知Objective-C

Ios 如何处理和发送远程通知Objective-C,ios,objective-c,iphone,notifications,push-notification,Ios,Objective C,Iphone,Notifications,Push Notification,我有一些问题想了很久了。我希望在这里得到答案 1) 我有许多推送通知发送到设备,具体取决于设备上发生的情况。每个推送通知都可用于不同的ViewController。通过这种方式,我的意思是推送通知与ViewController需要使用的一些自定义数据一起接收。 那么,为了便于共享通知中的数据,最好的设置方法是什么 2) 正如我前面所说,我有不同类型的通知。我现在这样做是为了让我知道如何处理每个通知,我发送它们的方式如下: data: { type: "4", some

我有一些问题想了很久了。我希望在这里得到答案

1) 我有许多推送通知发送到设备,具体取决于设备上发生的情况。每个推送通知都可用于不同的ViewController。通过这种方式,我的意思是推送通知与ViewController需要使用的一些自定义数据一起接收。 那么,为了便于共享通知中的数据,最好的设置方法是什么

2) 正如我前面所说,我有不同类型的通知。我现在这样做是为了让我知道如何处理每个通知,我发送它们的方式如下:

data: {
       type: "4",
       some other data....
    }
因此,每次收到通知时,我都会使用if语句来检查它是什么类型的。这是一种合法/正确的方法还是有其他方法

我希望您能提供一些代码示例,特别是问题1

谢谢

-(void)application:(UIApplication*)application didReceiveMemotentification:(NSDictionary*)userInfo
是您将条件放入的位置。 userInfo字典是存储通知信息的地方。 例如,要获取您喜欢的类型,请执行以下操作:

if([userInfo[@"aps"][@"type"] isEqualToString:@"4"])
{
    //your custom code here
}
现在,当您收到远程通知时,您将希望发送本地通知,如下所示:

[[NSNotificationCenter defaultCenter] postNotificationName:@"yourMessage" object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"yourMessage" object:nil];
然后在视图控制器中添加:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(yourCustomMethod) name:@"yourMessage" object:nil];
不要忘记在您的
视图中注销本地通知将消失:
方法如下:

[[NSNotificationCenter defaultCenter] postNotificationName:@"yourMessage" object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"yourMessage" object:nil];

希望这能有所帮助,如果不清楚,请告诉我。

有些问题很清楚。我应该将addObserver放在ViewDidDisplay或will Display right?中?。还有第二个问题。假设我在Viewcontroller A中,我收到一个通知,该通知的类型将在Viewcontroller B中使用。如果我说为Viewcontroller B设置一些属性值,它还会得到处理吗?您必须将其放入Viewcontroller B中。因为您正在实现removeObserver:只有当前的ViewController将获得本地通知。因此,如果您在ViewController A中,并且收到一个针对ViewController B的通知,则不会发生任何事情。如果不希望出现这种行为,请不要实现removeObserver:方法,但仍然应该初始化ViewController B以使其能够处理通知。是否有方法从ViewController a开始对其进行初始化?您可以使用InstanceDeviceController WithiIdentifier:方法谢谢,我将努力实现这一点!