2014-09-08 2 views
0

사용자가 따르는 사용자 목록에서만 푸시 알림을받을 수있는 솔루션을 구현하고 있습니다. 메시지를 보낼 때 고급 대상 수신자에 대해 읽었습니다. 내가 팔로우하는 사용자의 게시물 만 수신하려면 설치 객체를 어떻게 설정해야합니까? 그가 따르는 사용자 목록을 가져와 설치 객체를 설정해야합니까? 문제는, 필자는 로그인 로그인보기 컨트롤러를 사용하고 있으며 로그인 한 후에야 다음 사용자의 목록을 볼 수 있습니다. 두 번째 질문은 사용자가 로그인하지 않은 경우 푸시 알림을받을 수 있는지 여부입니다. 세 번째 질문은 앱을 시작할 때마다 새로운 Parse 설치 개체가 만들어 지는지 여부입니다. 요구 사항은 내가 따르는 사용자로부터 푸시 알림을 받아야한다는 것입니다. 제발 조언.IOS 대상 푸시 알림 - 구문 분석 API

답변

0

내 인증 및 푸시 알림 시스템을 구현하는 동안 비슷한 질문과 우려 사항이있었습니다. 이것은 내가 그것을 어떻게 처리했는지입니다. AppDelegate.m에서

:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 
PFInstallation *currentInstallation = [PFInstallation currentInstallation]; 

if (authenticated) { 
    NSString *user = someUniqueStringForUser; 
    [currentInstallation addUniqueObject:user forKey:@"channels"]; 
} 

[currentInstallation setDeviceTokenFromData:deviceToken]; 
[currentInstallation saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { 
    if (succeeded) { 
     NSLog(@"Successful Registration %s", __PRETTY_FUNCTION__); 
    } else { 
     NSLog(@"Error %@, %s", error, __PRETTY_FUNCTION__); 
    } 
}]; 

}

로그인 ViewController.m에서

- (void)authenticatedAndRegisterForPush { 
    PFInstallation *currentInstallation = [PFInstallation currentInstallation]; 
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert)]; 
    NSString *appUser = uniqueString; 
    [currentInstallation addUniqueObject:appUser forKey:@"channels"]; 
    [currentInstallation saveInBackground]; 
} 

난 당신이 있기 때문에 다시 채널을 추가해야 100 % 확실하지 않다 didRegister 메서드는 논리를 처리하지만 나는 그것을하고 올바르게 작동하는 것 같습니다. 그런 다음 어떤 뷰 컨트롤러에서 팔로우 할 사람을 선택해야만 PFInstallation 개체를 호출하고 채널에 구독하고 저장하면됩니다.

푸시 알림을 보내려면 해당 채널을 구독하는 모든 사람들에게 푸시 알림을 보내야합니다. 설치에 등록 된 장치 토큰 정보가없는 경우 구문 분석은 푸시 알림을 보내지 못합니다.

iOS 8의 원격/푸시 알림에 약간의 변경이있을 것으로 생각됩니다. 따라서 iOS SDK에 맞춰 앱을 만들면 appDelegate 메소드가 최소한으로 변경 될 수 있습니다.

사용자의 푸시 알림을 제거하려면 등록 프로세스의 반대 작업을 수행해야합니다. 설치를 호출하고 청취 할 모든 채널을 제거한 다음 저장하십시오.

PFInstallation은 appBundle과 관련된 설치 인스턴스가 있는지 확인합니다. 따라서 로그 아웃했다가 다시 로그인하면 장치와 설치가 동일하게 인식됩니다. 채널을 올바르게 정리하지 않은 경우에만 로그 아웃 및 푸시 알림과 관련된 문제가있었습니다. 같은 장치에 여러 대의 설치를 삭제하고 다시 설치할 때 테스트하는 데에도 어려움이 있습니다. 나는이 특별한 문제에 대한 훌륭한 해결책을 찾지 못했지만, 그렇게한다면 알려주세요.

희망이 있습니다.

+0

감사합니다.하지만 사용자의 소식을받는 사람에게 푸시 알림을 타겟팅하는 방법이 명확하지 않습니다. 채널 키에 고유 한 문자열을 제공하고 있지만 채널이 더 광범위하다는 것을 알았습니다. 사용자 A가 사용자 B와 사용자 C를 따라 가고 있다고 가정 해 봅시다. B 또는 C가 게시물을 게시하면 A는 푸시 알림을 수신해야합니다. 로그인보기 컨트롤러에서 사용자가 따르는 사람 목록으로 설치 개체를 업데이트해야 업데이트가 게시 될 때 밀어 넣기 알림을받을 수 있습니다. 알림 전송 부분에서 PFQuery를 사용하여 그의 추종자 인 수신자를 대상으로 할 수 있습니까? – chockbal

+0

채널은 문자열 배열로 저장되므로 사용자 A가 채널 "UserB"및 "UserC"에 가입하는 경우. 사용자 B가 게시물을 올리면 게시물을 처리하는 서비스에서 'x'메시지를 사용하여 'UserB'채널에 가입 한 모든 사용자에게 알립니다."알림을 수신하는 모든 ViewController가 알림을 게시 할 때 NSNotification과 동일합니다. –