답변:
푸시 사용 앱이 처음으로 푸시 알림을 등록하면 iOS는 사용자에게 해당 앱에 대한 알림을받을 것인지 묻습니다. 사용자가이 경고에 응답하면 기기를 복원하거나 앱을 하루 이상 제거하지 않으면 다시 표시되지 않습니다.
앱의 최초 실행을 시뮬레이션하려면 하루 동안 앱을 제거 된 상태로 둘 수 있습니다. 시스템 시계를 하루 이상 앞으로 설정하고 장치를 완전히 껐다가 다시 켜면 실제로 하루를 기다리지 않고 후자를 얻을 수 있습니다.
업데이트 : 아래 의견에서 언급 했듯이이 솔루션은 iOS 5.1부터 작동을 멈췄습니다. Apple에서 문서를 업데이트 할 수 있도록 버그를 신고하는 것이 좋습니다. 현재 솔루션은 장치의 내용과 설정을 재설정하는 것 같습니다.
업데이트 : 기술 노트가 iOS 7부터 올바르게 작동하는 새로운 단계로 업데이트되었습니다.
- 기기에서 앱을 삭제합니다.
- 장치를 완전히 껐다가 다시 켜십시오.
- 설정> 일반> 날짜 및 시간으로 이동하여 하루 이상 날짜를 설정하십시오.
- 장치를 완전히 껐다가 다시 켜십시오.
iOS 9부터 업데이트
앱을 삭제하고 다시 설치하면 알림 상태가 재설정됩니다 notDetermined
(즉, 프롬프트가 표시됨).
아래의 Gomfucius의 답변 덕분에 https://stackoverflow.com/a/33247900/704803
이것 에 대한 솔루션을 테스트 하기 위한 또 다른 방법은 단순히 번들 ID를 변경하는 것입니다. 완료되면 다시 변경하는 것을 잊지 마십시오!
iOS 9.0.2에서 앱을 삭제하고 다시 설치할 때마다 "푸시 알림 등록 알림"이 표시됩니다. 이는 AppStore 프로덕션 다운로드 및 임시 모드 모두에 해당됩니다.
업데이트 : 이것이 iOS 9.x에서 작동하는 것으로 확인되었습니다.
이미 언급했듯이 장치의 앱에 대한 알림 상태를 재설정하는 방법은 iOS5에서 더 최신으로 변경되었습니다.
이것은 iOS6에서 저에게 효과적입니다.
그러나 이렇게하면 초기 프롬프트 만 다시 나타나게되며 다른 푸시 상태 관련 항목은 제거되지 않습니다.
plist : /private/var/mobile/Library/RemoteNotification/Clients.plist
... 푸시 알림에 등록 된 클라이언트를 포함합니다. 앱 항목을 제거하면 프롬프트가 다시 나타납니다.
프로그래밍 방식으로하면 매번 작동하는 것 같습니다. 다음 줄을 주석 처리하지 않은 빌드가 있습니다.
[[UIApplication sharedApplication] unregisterForRemoteNotifications];
PN에서 등록을 취소 할 때마다 실행합니다. 최근 앱 목록에서 앱을 명시 적으로 종료하고 설정 앱의 알림 센터를 사용하여 제대로 작동해야 할 수 있습니다.
또한 사용자에게 PN 등록을 요청하는 UI 프롬프트가 표시되지 않을 수 있습니다. 최신 iOS 버전에서 사용 중지되었는지 확실하지 않습니다.
ianolito가 말했듯이 날짜 설정은 효과가 있습니다.
시스템 시계를 하루 이상 앞으로 설정하고 장치를 완전히 끈 다음 장치를 다시 켜면 실제로 하루를 기다리지 않고 후자를 얻을 수 있습니다.
내 기기 (iPhone 4, iOS 6.1.2) 에서 하루 또는 몇 일 동안 시스템 시계를 설정해 도 작동하지 않는 것으로 나타났습니다 . 그래서 날짜를 한 달 앞으로 설정 한 다음 작동했고 응용 프로그램에 알림 메시지가 다시 표시되었습니다.
이것이 누군가에게 도움이되기를 바랍니다. 머리가 아플 수 있습니다!
micmdk에 동의합니다. 푸시 알림을 사용하여 개발 환경을 설정했으며 초기 설치처럼 보이도록 휴대 전화를 재설정하는 방법이 필요했습니다.이 정확한 단계 만 수행하면됩니다. 장치를 두 번 재부팅해야합니다.
APPLE TECH DOC에서 :
iOS에서 푸시 알림 권한 경고 재설정 푸시 가능 앱이 푸시 알림을 처음 등록하면 iOS는 사용자에게 해당 앱에 대한 알림을받을 것인지 묻습니다. 사용자가이 경고에 응답하면 기기를 복원하거나 앱을 하루 이상 제거하지 않으면 다시 표시되지 않습니다.
앱의 최초 실행을 시뮬레이션하려면 하루 동안 앱을 제거 된 상태로 둘 수 있습니다. 다음 단계에 따라 실제로 하루를 기다리지 않고 후자를 얻을 수 있습니다.
기기에서 앱을 삭제합니다.
장치를 완전히 껐다가 다시 켜십시오.
설정> 일반> 날짜 및 시간으로 이동하여 하루 이상 날짜를 설정하십시오.
장치를 완전히 껐다가 다시 켜십시오.
나는 과거에 이것에 대해 궁금해했으며 실제로 내 코드에 유효한 테스트 사례가 아니라는 결론에 도달했습니다. 응용 프로그램 코드가 실제로 알림을 처음 거부하거나 나중에 iPhone 알림 설정에서 비활성화하는 사람의 차이점을 알 수 있다고 생각하지 않습니다. 사용자 환경이 다르지만 registerForRemoteNotificationTypes 호출 안에 숨겨져 있다는 것은 사실입니다.
unregisterForRemoteNotifications를 호출해도 알림 설정에서 응용 프로그램이 완전히 제거되지는 않지만 해당 응용 프로그램의 설정 내용이 제거됩니다. 따라서 여전히 다음에 앱을 실행할 때 대화 상자가 두 번째로 표시되지 않습니다 (적어도 현재 테스트중인 v3.1.3은 아닙니다). 그러나 위에서 말한 것처럼 아마 당신은 그것에 대해 걱정하지 않아야합니다.
수락 된 답변 ( TN2265-푸시 알림 문제 해결)에서 참조한 것과 동일한 기술 노트 가 iOS 5 이상에 대한 솔루션으로 업데이트되었습니다.
한마디로 : 백업을 생성하고 매번 백업합니다.
iOS 5 이상에서는 백업에서 장치를 복원하여 푸시 알림 권한 경고를 재설정합니다 (r. 11450187). 이를 효율적으로 수행하는 단계는 다음과 같습니다.
- Xcode Organizer를 사용하여 장치에 앱을 설치하십시오. 열쇠는 앱을 실행하지 않고 처음으로 설치하는 것입니다.
- iTunes를 사용하여 장비를 백업하십시오.
- 앱을 실행하십시오. 푸시 알림 권한 경고가 표시됩니다.
- 푸시 알림 권한 경고를 재설정하려면 첫 번째 단계에서 생성 한 백업에서 장치를 복원하십시오.
Apple 기술 노트는 또한 장치를 복원하여 푸시 알림 대화 상자를 재설정 할 수 있다고 설명했습니다.
또한 장치 자체 (iOS 5.x)에서 "일반-> 재설정-> 모든 컨텐츠 및 설정 지우기"옵션을 사용할 수는 없습니다.
ianolito의 답변 외에도.
1 년 전에 다운로드 한 앱과 동일한 문제가 있었으며 초기에 푸시 알림을 거부했습니다. 푸시 알림을 다시 원하면 iOS 7 베타 에서이 단계가 효과적이었습니다. 어느 지점에서 정확히 트리거했는지 확실하지 않습니다.
"모든 컨텐츠 및 설정 지우기"가 필요하지 않은 신에게 감사하십시오. 어쩌면 누군가를 도울 것입니다.
최근에 반응 네이티브 응용 프로그램과 비슷한 문제가 발생했습니다. iPhone OS 버전은 13.1입니다. 응용 프로그램을 제거하고 앱을 설치하려고했지만 위치 및 알림 권한이 모두 표시되지 않는 것을 알았습니다.
설정을 확인하면 응용 프로그램이 이전 설치 위치에서 활성화되어 있음을 알 수 있었지만 시간을 설정하지 않고 제거 및 재부팅을 시도했다는 알림에 해당하는 항목이 없습니다. 작동하지 않았습니다. Btw, 나는 여전히 동일한 동작으로 Appstore 앱을 다운로드하려고했습니다.
장치 시간을 설정 한 후에 만 문제가 해결되었습니다.
몇 시간 동안 검색하고 위의 제안에 운이 없으면 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
}
}