Iphone 获取通知警报正文并将其存储在字符串中

Iphone 获取通知警报正文并将其存储在字符串中,iphone,ios,ipad,Iphone,Ios,Ipad,我在如何获取推送通知警报正文方面遇到问题 - (void)application:(UIApplication*)application didReceiveRemoteNotification: (NSDictionary*)userInfo{ NSLog(@"Received notification: %@", userInfo); } 但是,它返回正确的通知值 我的NSLog 2013-08-06 05:58:29.340 CareProject[4477:907] Recei

我在如何获取推送通知警报正文方面遇到问题

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

 NSLog(@"Received notification: %@", userInfo);

 }
但是,它返回正确的通知值

我的NSLog

2013-08-06 05:58:29.340 CareProject[4477:907] Received notification: {
aps =     {
alert = "Are you available to visit Facility 1?";
badge = 1;
sound = default;
};
}

我不知道怎样才能得到一个机警的身体。“您是否可以参观设施1?”
我想通过字符串存储它,并将其显示在ViewController.m上的标签上。请帮助我。

您可以轻松访问:

[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]

您可以轻松访问:

[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]
从这里开始:

userInfo字典包含aps键,其值是另一个字典。虽然您不需要aps字典中的信息,但可以使用以下键检索其内容:

警报-该值是警报消息的字符串或带有两个键的字典:body和show view。body键的值是包含警报消息的字符串,show view键的值是布尔值。如果show view(显示视图)键的值为false,则不会显示警报的view(查看)按钮。默认设置是显示View按钮,如果用户点击该按钮,将启动应用程序

因此,基本上,您需要:

NSDictionary *apsDict = [userInfo objectForKey:@"aps"]; 
if (apsDict != nil) {
    id alertObj = [apsDict objectForKey:@"alert"];
    if ([alertObj isKindOfClass:[NSString class]] == YES) {
        NSString *alert = alertObj;
        if ([alert length] > 0) {
            // use alert as NSString
        }
    }
}
从这里开始:

userInfo字典包含aps键,其值是另一个字典。虽然您不需要aps字典中的信息,但可以使用以下键检索其内容:

警报-该值是警报消息的字符串或带有两个键的字典:body和show view。body键的值是包含警报消息的字符串,show view键的值是布尔值。如果show view(显示视图)键的值为false,则不会显示警报的view(查看)按钮。默认设置是显示View按钮,如果用户点击该按钮,将启动应用程序

因此,基本上,您需要:

NSDictionary *apsDict = [userInfo objectForKey:@"aps"]; 
if (apsDict != nil) {
    id alertObj = [apsDict objectForKey:@"alert"];
    if ([alertObj isKindOfClass:[NSString class]] == YES) {
        NSString *alert = alertObj;
        if ([alert length] > 0) {
            // use alert as NSString
        }
    }
}
试试这个:

NSString*alertBody=[[userInfo objectForKey:@"aps"]objectForKey:@"alert"];
试试这个:

NSString*alertBody=[[userInfo objectForKey:@"aps"]objectForKey:@"alert"];

这样地?NSString*str=userInfo[@“警报”];这给了我一个错误。对不起,我打错了。应该是NSString*str=userInfo[@“aps”][@“警报”];我在那条线上仍然有一个错误。“在“NSDictionary*”类型的对象上找不到读取字典元素的预期方法。”。知道原因是什么吗?我把代码放在DidReceiveMemotentification方法上。你说的长手是什么意思?在我最初的回答中,我对键(userInfo[@“aps”)使用字典速记,但因为编译器不知道键“aps”处的userInfo对象是字典,所以失败了。长手(使用objectForKey:)将起作用,因为它会通知编译器项首先是字典。像这样?NSString*str=userInfo[@“alert”];它会给我一个错误。抱歉,我有一个打字错误。应该是NSString*str=userInfo[@“aps”[@“alert”];我在那一行仍然有错误。“在类型为“NSDictionary*”的对象上找不到读取字典元素的预期方法”你知道原因是什么吗?我把代码放在DidReceiveMemotentification方法上。你说的长手是什么意思?在我最初的回答中,我对键(userInfo[@“aps”)使用字典速记,但因为编译器不知道键“aps”处的userInfo对象是字典,所以失败了。长手(使用objectForKey:)将起作用,因为它首先通知编译器项是字典。