iOS 학습 노트 의 원 격 푸 시,침묵 푸 시 및 사용자 정의 메시지 푸 시

원 격 푸 시 는 다음 세 가지 상태 에 있 을 수 있 습 니 다.
     (1).오픈 시 프론트 데스크 에 적용
    (2).오픈 시 배경 에 적용
    (3).시작 되 지 않 은 응용 프로그램(응용 프로그램 이 죽 임)
애플 APNS 서버 에서 원 격 으로 푸 시 할 때:
1.(1)상태 에 있 으 면 소 리 를 내지 않 고 app Delegate 의 프 록 시 방법 didReceiveRemote Notification 을 직접 호출 합 니 다.이 때 시스템 의 팝 업 창 알림 을 받 으 려 면 사용자 정의 팝 업 창,알림 음,진동(팝 업 창 참조:ForeNotification  ( 로 컬 다운로드 ))

AudioServicesPlaySystemSound(1007);//     
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);//  
2.(2)상태 에 있 으 면 알림 음 을 보 내 고 푸 시 메 시 지 를 누 르 면 app Delegate 의 프 록 시 방법 didReceiveRemote Notification 을 호출 합 니 다.
3.(3)상태 에 있 으 면 알림 음 을 보 내 고 푸 시 메 시 지 를 누 르 면 응용 프로그램 이 열 립 니 다.아래 방법 에 launchOptions 라 는 매개 변 수 를 가 져 옵 니 다application:didReceiveRemoteNotification:fetchCompletionHandler:이 방법 이 실현 되면 이 방법 을 사용 합 니 다.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
 NSDictionary *remoteNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey];

 if (remoteNotification) {
 //    BOOL ,             
 self.isLaunchedByNotification = YES;
 }else{

 }
 [self checkIsLaunchedByNotification];

 return YES;
}
원 격 푸 시 를 받 은 후 메시지 창 으로 이동 가능:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
 NSDictionary *aps = [userInfo valueForKey:@"aps"];

 NSDictionary *alert = [aps valueForKey:@"alert"];

 NSString * body = alert[@"body"];

 if ([UIApplication sharedApplication].applicationState == UIApplicationStateActive) {
 //     
 
 [EBForeNotification handleRemoteNotification:@{@"aps":@{@"alert":[NSString stringWithFormat:@"%@",body]}} soundID:1312];
 
 }else{
 
 //     
 
 [self gotoMessageVC];
 }
}

#pragma mark -              

- (void)checkIsLaunchedByNotification{
 
 if (self.isLaunchedByNotification) {
 
 [self gotoMessageVC];
 
 }
}

#pragma mark -        (       ,    ,         ,     )

- (void)clickBannerView:(NSNotification *)notification{
 
 NSDictionary * dict = notification.object;
 
 [self gotoMessageVC];
}

#pragma mark -        (      /          )

- (void)gotoMessageVC{
 
 if([self.window.rootViewController isEqual:self.tabBarController]){
 
 if([self.tabBarController.selectedViewController isKindOfClass:[UINavigationController class]]){
  UINavigationController * nav = self.tabBarController.selectedViewController;
  
  if (![nav.topViewController isKindOfClass:[MessagesViewController class]]) {
  
  MessagesViewController *messageVC = [[MessagesViewController alloc] init];
  
  messageVC.hidesBottomBarWhenPushed = YES;
  
  [nav.visibleViewController.navigationController pushViewController:messageVC animated:YES];
  }
 }
 }
}
묵묵 부 답
침묵 푸 시 를 받 으 려 면 만족 해 야 할 조건:
1.프론트/백 엔 드 에 적용(죽 으 면 받 을 수 없 음)
2.응용 이 실현 되 었 다application:didReceiveRemoteNotification:fetchCompletionHandler:3.만약 에 실현 되 지 않 았 다 면application:didReceiveRemoteNotification:,응용 은 프론트 데스크 에서 만 침묵 추 송 을 받 을 수 있 고 백 스테이지 에 응용 할 때 침묵 추 송 을 받 을 수 없다.
사용자 정의 메시지 전송
소개:극광 푸 시 는 사용자 정의 메시지 푸 시 를 제공 합 니 다.이러한 푸 시 는 프론트 데스크 에 응용 되 어야 만 받 을 수 있 습 니 다.배경/죽 임 을 당 했 을 때 사용자 정의 메시지 가 저 장 됩 니 다.응용 프로그램 이 프론트 에 있 을 때 까지 사용 할 수 있 습 니 다.
사용 장면:프론트 데스크 에서 대량의 데 이 터 를 처리 해 야 할 때 사용자 정의 메 시 지 를 사용 할 수 있 습 니 다.예 를 들 어 특정한 모듈 을 사용 하려 면 업데이트 가 필요 합 니 다.이때 배경 에서 사용자 정의 메 시 지 를 보 내 고 응용 프로그램 이 시작 되면 자동 으로 다운로드 할 수 있 습 니 다.

 //        ,         
 //     
 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveJPushCustomMessage:) name:kJPFNetworkDidReceiveMessageNotification object:nil];

//    JPush        
- (void)receiveJPushCustomMessage:(NSNotification *)notification {
 
 NSDictionary *userInfo = [notification userInfo];
 
 NSString *title = [userInfo valueForKey:@"title"];
 
 NSString *content = [userInfo valueForKey:@"content"];
 
 NSDictionary *extra = [userInfo valueForKey:@"extras"];
 
}
요약:
1.백 스테이지/프론트 데스크/피 살 시 일반 원 격 푸 시 를 받 을 수 있 습 니 다.
2.죽 임 을 당 했 을 때 Background Fetch 를 통 해 짧 은 시간 에 깨 울 수 있 습 니 다.
3.백 스테이지/프론트 데스크 에 적용 할 때 침묵 푸 시 를 통 해 데 이 터 를 수정 할 수 있 습 니 다.
4.사용자 정의 메시지 적용
자,이상 이 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기