2017-05-15 5 views
1

, 나는 지역의 푸시 알림을 처리하기위한 두 가지 기능이 있다는 것을 볼 수있는 배경에있을 때 앱이 포 그라운드에있을 때 푸시 알림이 발생합니다. 두 번째는 앱이 백그라운드에 있고 사용자가 알림을 클릭하면 푸시 알림이 발생할 때 발생합니다.지역의 푸시 알림을 처리하는 응용 프로그램은 아이폰 OS 10에서

내 질문은, 앱이 배경에있을 때 사용자가 클릭하지 않아도 로컬 푸시 알림을 처리 할 수있는 방법이 있습니까? 이상적으로는 앱이 백그라운드 또는 포 그라운드에있는 동안 내 모든 푸시 알림을 사용하여 CloudKit 업데이트를 실행하고 싶습니다. 이것은 가능한가?

감사합니다.

+0

CloudKit을 사용하는 경우 'didReceiveRemoteNotification : completionHandler' 앱 대리자 메서드를 사용할 수 있습니다. – Paulw11

+0

글쎄, 실제로 원격 알림을 사용하지는 않습니다. 내 * local * 통지가 데이터베이스에'add' 연산을하는 함수를 트리거하기를 원합니다. – mlecoz

+0

iOS에서 사용할 수있는 시간별 배경 실행 모드가 없습니다. – Paulw11

답변

0

내가 생각할 수있는 유일한 방법은 알림 확장 프로그램을 앱에 추가하는 것입니다. "알림 서비스 확장"및 "알림 콘텐츠 확장"의 두 가지 유형이 있습니다.

두 가지 모두 원래 의도 된 것이지만이 두 가지 모두 방법 didReceive(_:withContentHandler:)을 구현할 수 있기 때문에이 두 가지 시나리오 모두에서 작동 할 수 있습니다. 앱이 백그라운드에있는 경우 수신하고 응답 할 수 있습니다. 공고.

은 내가 "알림 서비스 확장"사용하는 것이 좋습니다 (원래 표시하기 전에 통지의 내용 권한을 변경하는 의미가있어,하지만 당신은 수정되지 않은 그것을 떠날 수), 그리고 didReceive(_:withContentHandler:) 방법을 구현. 동일한 원본 알림을 사용하여 콘텐츠 처리기를 호출하고 CloudKit 업데이트를 트리거하기 만하면됩니다.

다음은 서비스 확장을 추가하는 방법에 대한 좋은 튜토리얼입니다 : 그 부분 "3. 확장 코드"에서 https://code.tutsplus.com/tutorials/ios-10-notification-service-extensions--cms-27550

이 메소드를 구현하는 방법의 예, 그건 "// Edit properties of copy을"라는 코멘트와 함께, 거기에 정확히 어디서 CloudKit 업데이트를 트리거 할 코드를 추가 할 것인가, 앱이 백그라운드에있을 때마다 알림을 표시하기 바로 전에 실행됩니다.

+0

'Notification Service Extension '은 로컬 알림과 함께 작동하지 않습니다. 'Notification Content Extension'은 로컬 알림과 함께 작동하지만 사용자가 알림 액션 중 하나를 누를 때'didReceive (_ : withContentHandler :)'가 호출됩니다. https://developer.apple.com/documentation/usernotificationsui/unnotificationcontentextension/1845197- didreceive. – rafalkitta