0

5のチャット アプリケーションを開発してiOSいます。ローカル通知に問題がありました。アプリケーションがバックグラウンド状態になったとき、私はこのコードを使用しています:

  UILocalNotification *localNotification = [[UILocalNotification alloc] init];
  localNotification.alertAction = @"Ok";
  localNotification.alertBody = [NSString stringWithFormat:@"From: %@\n%@",message.sender,message.message];

  [[UIApplication sharedApplication] presentLocalNotificationNow:localNotification];
  [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
  [localNotification release];

しかし、アプリケーションがアクティブな状態にあり、チャットページにない場合は、ローカル通知も必要ですが、同じコードを使用しましたが、通知はトレイに来ていますが、バナーは来ていません....

私を助けてください...

4

2 に答える 2

1

次のメソッドをアプリケーションのデリゲートに入れます

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification 
{
    UILocalNotification *localNotif =notification;
    NSString *strBody=[localNotif.userInfo valueForKey:@"Body"];
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Your Application name" 
                                                    message:strBody
                                                   delegate:self cancelButtonTitle:@"Ok" 
                                          otherButtonTitles:nil];
    [alert show];

    //NSLog(@"Incoming notification in running app");

    // Access the payload content
    //NSLog(@"Notification payload: %@", [notification.userInfo objectForKey:@"body"]);

    application.applicationIconBadgeNumber = 0;
}
于 2012-04-24T05:54:54.720 に答える
0

次のコードは、リモート通知とローカル通知の両方を処理します

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
    [self showNotificationAlert:notification.alertBody];
}

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    NSString *alertMsg = nil;
    id alert = [[userInfo objectForKey:@"aps"] objectForKey:@"alert"];

    if ([alert isKindOfClass:NSString.class])
        alertMsg = alert;
    else if ([alert isKindOfClass:NSDictionary.class])
        alertMsg = [alert objectForKey:@"body"];

    [self showNotificationAlert:alertMsg];
}

- (void)showNotificationAlert:(NSString *)alertMsg
{
    if (!alertMsg)
        return;

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Message", nil)
                                                    message:alertMsg
                                                   delegate:self cancelButtonTitle:NSLocalizedString(@"OK", nil)
                                          otherButtonTitles:nil];
    [alert show];

    [UIApplication sharedApplication].applicationIconBadgeNumber = 0;
}
于 2012-09-21T09:19:01.080 に答える