获取Notification警报正文并将其存储在String上

时间:2013-08-05 22:31:33

标签: 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] Received notification: {
aps =     {
alert = "Are you available to visit Facility 1?";
badge = 1;
sound = default;
};

}

我不知道如何获得警报体。 “您可以参观设施1吗?” 我想通过String存储它并将其显示在我的ViewController.m上的标签上。请帮帮我。

3 个答案:

答案 0 :(得分:3)

您可以轻松访问:

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

答案 1 :(得分:1)

从这里开始:iOS Developer Lib

  

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

     

警告 - 该值可以是警报消息的字符串,也可以是包含两个键的字典:body和show-view。正文键的值是包含警报消息的字符串,show-view键的值是布尔值。如果show-view键的值为false,则不显示警报的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
        }
    }
}

答案 2 :(得分:1)

试试这个:

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