6

我有一个关于通知的问题要问。经过几个小时学习如何在 iPhone 上实现推送通知,它现在来了!

如何管理点击徽章或点击警报查看的用户?当用户点击那里时会发生什么?

我试图以跳板增量向我发送一些通知和应用程序图标上的数字。通过哪种方式单击那里可以显示一个uiview来管理到达的通知并显示已读和未读的消息?

有教程吗?我想将所有消息保存在 uitableview 中。

4

1 回答 1

34

您想阅读处理本地和远程通知

基本上在您的应用程序委托中,您想要实现:

- (BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

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

并处理通知数据的launchOptions / userInfo。

我通常如何处理数据是:

- (BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    NSDictionary* userInfo =
        [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    if (userInfo) {
        [self processRemoteNotification:userInfo];
    }
    [window addSubview:viewController.view];
    [window makeKeyAndVisible];
    return YES;
}

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
    [self processRemoteNotification:userInfo];
}

userInfo 的格式记录在The Notification Payload部分。

例如,“aps”键将为您提供另一个 NSDictionary,然后查找“alert”键将为您提供显示的警报消息。此外,您在 JSON 有效负载中发送的任何自定义数据也将在其中。

NSDictionary *apsInfo = [userInfo objectForKey:@"aps"];

NSString *alertMsg = @"";
NSString *badge = @"";
NSString *sound = @"";
NSString *custom = @"";

if( [apsInfo objectForKey:@"alert"] != NULL)
{
    alertMsg = [apsInfo objectForKey:@"alert"]; 
}


if( [apsInfo objectForKey:@"badge"] != NULL)
{
    badge = [apsInfo objectForKey:@"badge"]; 
}


if( [apsInfo objectForKey:@"sound"] != NULL)
{
    sound = [apsInfo objectForKey:@"sound"]; 
}

if( [userInfo objectForKey:@"Custom"] != NULL)
{
    custom = [userInfo objectForKey:@"Custom"];
}
于 2011-12-31T00:31:06.023 回答