0

我对如何获取推送通知警报正文有疑问。

- (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;
};

}

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

4

3 回答 3

3

您可以轻松访问它:

[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]
于 2013-08-05T22:35:29.403 回答
1

从这里开始:iOS 开发者库

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

alert — 该值可以是警报消息的字符串,也可以是具有两个键的字典: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
        }
    }
}
于 2013-08-05T22:47:13.617 回答
1

试试这个:

NSString*alertBody=[[userInfo objectForKey:@"aps"]objectForKey:@"alert"];
于 2013-08-06T03:40:28.987 回答