2014-04-24 2 views
0


배경과 전경 모두 내 푸시 알림을 받았지만 내 응용 프로그램이 활성 상태/전경이고 푸시 알림이 도착한 다음 내 문제가 발생했습니다. 알림 표시에이 밀어 넣기 알림 메시지가 표시됩니다. didReceiveRemoteNotification 방법,알림 영역에 내 밀어 넣기 알림 추가

내 경고보기에는 두 개의 버튼이 있습니다.
1) 나중에
2) 확인.

1) "나중에"버튼을 누르면 알림 영역에이 푸시 알림 메시지가 추가되므로 잠시 후 사용자가 해당 푸시 알림을보고 탭하여 누를 수 있으며 푸시 알림의 해당 기록이 제거됩니다. 알림 영역에서.

답변

1

이것은 불가능합니다. iOS의 알림에 액세스 할 API가 없습니다.

대체 가까운 대안은 로컬 알림입니다. 사용자가 나중에 선택하면 해당 사항에 대한 로컬 알림을 설정합니다. 사용자가 응용 프로그램을 계속 사용하는 동안 알림을받지 않도록 응용 프로그램을 떠날 때이 로컬 알림을 추가 할 수 있습니다.

더 나은 접근 가장 일반적인 접근법은 앱의 알림 화면입니다. 응용 프로그램에는 사용자가 응용 프로그램에서 확인할 수 있도록 수신 된 알림 목록이있는 하나의 화면이 있습니다. 나는 너와 함께 할 것을 제안한다. 이것은 가장 일반적이며 분명한 아이디어이기 때문에.

1

알림의 핵심 데이터를 구현해야하지만 애플리케이션이 활성 상태 일 때만 발생할 수 있습니다.

1 - 새로운 알림이 도착할 때마다 새로운 신원을 만듭니다. 2 회 저장하십시오.

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
{ 
NSDictionary *Notification = userInfo; 
NSString *title = [(NSDictionary*)[(NSDictionary*)[Notification valueForKey:@"aps"] valueForKey:@"alert"] valueForKey:@"title"]; 
    NSString *body = [(NSDictionary*)[(NSDictionary*)[Notification valueForKey:@"aps"] valueForKey:@"alert"] valueForKey:@"body"]; 
XXNotification *objNotification = [XXNotification create]; 

    objNotification.title = title; 
    objNotification.detail = body; 
[XXNotification save:nil]; 
NSArray *arrNotification =[XXNotification allUnRead:nil]; 
    [UtilityFunctions setApplicationBadgeNumber:[arrNotification count]];//Utility functions is my class for common functions. 

if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateActive) 
    { 
[UtilityFunctions showAlertView:title message:body delegate:self cancelButtonTitle:@"Ok" otherButtonTitle:@"Cancel" withTag:99 withAccessibilityHint:[NSString stringWithFormat:@"%@:|:%@", title,body]]; 
    } 
    else if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateInactive || [[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground) 
    { 
     UILocalNotification *localNotification = [[UILocalNotification alloc] init]; 
     localNotification.userInfo = userInfo; 
     localNotification.soundName = UILocalNotificationDefaultSoundName; 
     localNotification.alertBody = body; 
     localNotification.fireDate = [NSDate date]; 
     [[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; 
     if (![IsLocationSaved isEqualToString:@"NO"]) 
     { 
      [[NSNotificationCenter defaultCenter]postNotificationName:kNotificationForShowingNotification object: nil userInfo:nil]; 
     } 
    } 

} 

UIAlertView를 표시 할 때 클릭 이벤트에서 DB에서 해당 알림을 삭제하거나 isRead로 부울을 만들고 YES로 만듭니다.

On 알림 목록 DB에서 알림 또는 isRead가 NO 인 알림 만 쿼리합니다.

내 응용 프로그램에서 사용한 방법입니다.

+0

thx for replaying .... 애플리케이션이 비활성 상태 또는 백그라운드 상태에있을 때 IOS에 의한 알림 센터에 알림이 기본으로 표시되므로 애플리케이션이 활성 상태 일 때와 동일한 방법으로 설정할 수 있습니까 ?? –

+0

예! ActiveState의 didReceiveRemoteNotification에서 UILocalNotification을 확인합니다. – Xeieshan

+0

thx 잘 작동하고 있습니다. +1 –

관련 문제