문제

나는 앱을 개발하는 푸시 알림입니다.을 확인이 가능한 모든 방법의 사용자 상호 작용,나는 내 응용 프로그램을 테스트할 때 사용자가 거부하는 푸시 알림을 사용하도록 설정할 동안 응용 프로그램을 처음 시작합니다.

대화 상자(에 의해 시작 registerForRemoteNotificationTypes),그러나,한 번만 나타납 응용 프로그램.재설정하려면 어떻게 해야 합 아이폰 OS 의 메모리의 내용.응용 프로그램을 삭제하고 다시 설치하는 데 도움이 되지 않습니다.

도움이 되었습니까?

해결책

기술 노트 TN2265 : 푸시 알림 문제 해결

푸시 가능 앱이 푸시 알림을 처음 등록 할 때 iOS는 해당 앱에 대한 알림을 받으려는 지 사용자에게 묻습니다. 사용자 가이 경고에 응답하면 장치가 복원되거나 앱이 적어도 하루 동안 제거되지 않으면 다시 제시되지 않습니다.

앱의 처음 실행을 시뮬레이션하려면 하루 동안 앱을 제거 할 수 있습니다. 시스템 시계를 하루 이상 전진하여 장치를 완전히 끄고 장치를 다시 켜서 실제로 하루를 기다리지 않고 후자를 달성 할 수 있습니다.

업데이트: 아래 의견에 언급 된 바와 같이,이 솔루션은 iOS 5.1 이후 작동 중지되었습니다. Apple에 버그를 제출하여 문서를 업데이트 할 수 있도록 권장합니다. 현재 솔루션은 장치의 컨텐츠 및 설정을 재설정하는 것으로 보입니다.

업데이트: 기술 노트는 iOS 7에서 올바르게 작동하는 새로운 단계로 업데이트되었습니다.

  1. 장치에서 앱을 삭제하십시오.
  2. 장치를 완전히 끄고 다시 켜십시오.
  3. 설정> 일반> 날짜 및 시간으로 이동하여 하루에 미래의 날짜를 설정하십시오.
  4. 장치를 완전히 끄고 다시 켜십시오.

iOS 9 기준으로 업데이트

간단히 앱을 삭제하고 다시 설치하면 알림 상태가 notDetermined (의미 프롬프트가 나타납니다).

아래 Gomfucius의 답변에 감사드립니다.https://stackoverflow.com/a/33247900/704803

다른 팁

또 다른 단지 테스트를 위해 이에 대한 해결책은 단순히 번들 ID를 변경하는 것입니다. 완료되면 다시 변경하는 것을 잊지 마십시오!

IOS9.0.2,나"등록 푸시 알림 경고는"모든 시간 내 응용 프로그램을 삭제하고 다시 설치하십시오.이것은 모두를위한 진정한 앱 스토어는 생산 다운로드 및 애드혹 모니다.

업데이트: 그것은 확인이 iOS9.x

이미 언급했듯이 장치의 앱에 대한 알림 상태를 재설정하기위한 접근 방식은 iOS5에 대해 변경됩니다.

이것은 iOS6에서 나를 위해 작동합니다.

  • 장치에서 앱을 제거하십시오
  • 이틀 이상 장치를 DateTime을 설정하십시오
  • 장치를 다시 시작하십시오
  • 이틀 이상 장치를 DateTime을 설정하십시오
  • 장치를 다시 시작하십시오
  • 앱을 다시 설치하고 실행하십시오

그러나 이것은 초기 프롬프트 만 다시 나타나게됩니다. 다른 푸시 상태 관련 제품을 제거하지 않습니다.

plist : /private/var/mobile/library/remotenotification/clients.plist

... 푸시 알림을 위해 등록 된 클라이언트가 포함되어 있습니다. 앱의 항목을 제거하면 프롬프트가 다시 나타나게됩니다.

프로그래밍 방식으로하는 것은 매번 저를 위해 일하는 것 같습니다. 다음 줄이없는 빌드가 있습니다.

 [[UIApplication sharedApplication] unregisterForRemoteNotifications];

PN에서 등록하고 싶을 때마다 실행합니다. Recents 목록에서 명시 적으로 앱을 끝내고 설정 앱의 알림 센터와 함께 플레이하여 올바르게 얻어야 할 수도 있습니다.

또한 사용자에게 PN에 등록하도록 요청하는 UI 프롬프트는 나타나지 않을 수 있습니다. 최근 iOS 버전에서 비활성화되었는지 확실하지 않습니다.

Ianolito가 말했듯이 날짜를 설정해야합니다.

시스템 시계를 하루 이상 전진하여 장치를 완전히 끄고 장치를 다시 켜서 실제로 하루를 기다리지 않고 후자를 달성 할 수 있습니다.

내 장치 (iPhone 4, iOS 6.1.2) 시스템 시계 설정을 발견했습니다. 하루 앞으로 또는 며칠이 작동하지 않았습니다. 나를 위한. 그래서 날짜를 앞으로 설정했습니다 한 달 그런 다음 작동했고 응용 프로그램에 알림 프롬프트가 다시 표시되었습니다.

이것이 누구에게나 도움이되기를 바랍니다. 그것은 일종의 머리가 아플 수 있습니다!

나는 MICMDK에 동의합니다. 푸시 알림이있는 개발 환경 설정이 있었고 초기 설치처럼 보이도록 휴대 전화를 재설정하는 방법이 필요했습니다. 그리고 이러한 정확한 단계만이 저에게 효과적이었습니다.

Apple Tech Doc에서 :

iOS에서 푸시 알림 권한 경고 재설정 iOS 푸시 가능 앱이 푸시 알림을 처음 등록 할 때 iOS는 해당 앱에 대한 알림을 받으려는 지 사용자에게 묻습니다. 사용자 가이 경고에 응답하면 장치가 복원되거나 앱이 적어도 하루 동안 제거되지 않으면 다시 제시되지 않습니다.

앱의 처음 실행을 시뮬레이션하려면 하루 동안 앱을 제거 할 수 있습니다. 다음 단계를 따르면 실제로 하루를 기다리지 않고 후자를 달성 할 수 있습니다.

  1. 장치에서 앱을 삭제하십시오.

  2. 장치를 완전히 끄고 다시 켜십시오.

  3. 설정> 일반> 날짜 및 시간으로 이동하여 하루에 미래의 날짜를 설정하십시오.

  4. 장치를 완전히 끄고 다시 켜십시오.

나는 과거에 이것에 대해 궁금해하고 그것이 실제로 내 코드에 대한 유효한 테스트 사례가 아니라는 결론에 도달했습니다. 응용 프로그램 코드가 실제로 아이폰 알림 설정에서 처음으로 알림을 줄이거나 나중에 알리는 사람의 차이를 실제로 알 수 없다고 생각합니다. 사용자 경험이 다르지만 registerforRemotenotificationTypes에 대한 호출 안에 숨겨져 있다는 것은 사실입니다.

UnregisterforRemotenotifications를 호출한다고해서 알림 설정에서 응용 프로그램을 완전히 제거하지는 않지만 해당 응용 프로그램의 설정 내용을 제거합니다. 따라서 다음에 앱이 실행될 때 (적어도 현재 테스트중인 v3.1.3에 있지 않음) 대화 상자가 사용자에게 두 번째로 제시되지는 않습니다. 그러나 내가 위에서 말했듯이 당신은 아마 그것에 대해 걱정해서는 안됩니다.

허용 된 답변에서 언급 된 것과 동일한 기술 노트 (TN2265- 푸시 알림 문제 해결) 이후 iOS 5 이상을위한 솔루션으로 업데이트되었습니다.

요컨대 : 백업을 만들고 매번 복원하십시오.

iOS 5 이후에서는 백업에서 장치를 복원하여 푸시 알림 권한 경고를 재설정합니다 (r. 11450187). 이를 효율적으로 수행하는 단계는 다음과 같습니다.

  1. Xcode Organizer를 사용하여 장치에 앱을 설치하십시오. 열쇠는 앱을 실행하지 않고 처음으로 설치하는 것입니다.
  2. iTunes를 사용하여 장치를 백업하십시오.
  3. 앱을 실행하십시오. 푸시 알림 권한 경고가 제시됩니다.
  4. 푸시 알림 권한 경고를 재설정하려면 첫 번째 단계에서 만든 백업에서 장치를 복원하십시오.

Apple Tech 노트는 또한 푸시 알림 대화 상자를 재설정하기 위해 장치를 복원 할 수 있다고 설명했습니다.

장치 자체 (iOS 5.x)에서 "일반 -> 재설정 -> 모든 컨텐츠 및 설정을 지우는 것"옵션을 사용할 수 있다고 말하지는 않습니다.

또한 응답의 ianolito.

와 같은 문제가 있었 응용 프로그램 다운로드 전년과를 거부하는 푸시 알림을 처음.하나는 푸시 알림을 다시 이 단계에서 나를 위 iOS7 베타 버전입니다.지는 시점(s)트리거습니다.

  • 닫고 응용 프로그램을 삭제.
  • 가 iCloud 설정을 삭제에서 응용 프로그램'을 선택해주시기 바랍니다.이렇게 다른 모든 장치에서 당신은 아이 클라우드 백업 위한 앱을 사용합니다.비활성화한 후 및 삭제를 신선한 백업입니다.응용 프로그램에 나열되지 않을 더 이상에서 백업을 수행합니다.(이것은 어쩌면 이유를 기술 노트 애플에서 설명에 의해 ianolito 작동이 중지에서 iOS5,이후 iCloud 에 도입되었 iOS5,많은 아이 클라우드 백업 위한 앱을 사용합니다.)
  • 이동 시간 설정 시간 이상을 1 개월 앞서 있습니다.
  • 스위치 아이폰 off(설정).
  • 잠깐만,그것을 전환에 다시 다시 응용 프로그램을 다운로드.
  • 응용 프로그램을 시작하고 나는 대화 상자가 다시.
  • 활성화 응용 프로그램의 백업을 다시,이것은 여전히 비활성화됩니다.올바른 이 시간입니다.

하나님께 감사하지 않았는"모든 내용과 설정".어쩌면 그것은 사람을 도움이 될 것입니다.

몇 시간 동안 검색 한 후, 위의 제안에 운이 좋지 않은 경우, 이것은 3.x+의 매력처럼 작용했습니다.

override func viewDidLoad() {
        super.viewDidLoad()


            requestAuthorization()

}

func requestAuthorization() {

        if #available(iOS 10.0, *) {

            UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in
                print("Access granted: \(granted.description)")
            }

        } else {
            // Fallback on earlier versions
        }

    }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top