앱의 푸시 알림 설정 재설정


173

푸시 알림이있는 앱을 개발 중입니다. 가능한 모든 사용자 상호 작용 방법을 확인하기 위해 사용자가 처음 시작하는 동안 내 앱에 푸시 알림을 사용하도록 설정하지 않은 경우 내 앱을 테스트하고 싶습니다.

그러나 대화 상자 (로 시작 registerForRemoteNotificationTypes)는 앱당 한 번만 나타납니다. 내 앱의 iPhone OS 메모리를 어떻게 재설정합니까? 앱을 삭제하고 다시 설치해도 도움이되지 않습니다.

답변:


300

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

푸시 사용 앱이 처음으로 푸시 알림을 등록하면 iOS는 사용자에게 해당 앱에 대한 알림을받을 것인지 묻습니다. 사용자가이 경고에 응답하면 기기를 복원하거나 앱을 하루 이상 제거하지 않으면 다시 표시되지 않습니다.

앱의 최초 실행을 시뮬레이션하려면 하루 동안 앱을 제거 된 상태로 둘 수 있습니다. 시스템 시계를 하루 이상 앞으로 설정하고 장치를 완전히 껐다가 다시 켜면 실제로 하루를 기다리지 않고 후자를 얻을 수 있습니다.

업데이트 : 아래 의견에서 언급 했듯이이 솔루션은 iOS 5.1부터 작동을 멈췄습니다. Apple에서 문서를 업데이트 할 수 있도록 버그를 신고하는 것이 좋습니다. 현재 솔루션은 장치의 내용과 설정을 재설정하는 것 같습니다.

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

  1. 기기에서 앱을 삭제합니다.
  2. 장치를 완전히 껐다가 다시 켜십시오.
  3. 설정> 일반> 날짜 및 시간으로 이동하여 하루 이상 날짜를 설정하십시오.
  4. 장치를 완전히 껐다가 다시 켜십시오.

iOS 9부터 업데이트

앱을 삭제하고 다시 설치하면 알림 상태가 재설정됩니다 notDetermined(즉, 프롬프트가 표시됨).

아래의 Gomfucius의 답변 덕분에 https://stackoverflow.com/a/33247900/704803


16
누구든지 iOS 5.1에서 이것을 시도 했습니까? 나는이 단계를 정확하게 수행했지만 여전히 장치를 재설정 할 수 없습니다 ... Xcode를 통해 설치하기 전에 Mac에서 시계를 앞으로 설정하려고 시도했습니다.
nrj

1
디토 ... 프롬프트가 나타나지 않았다.
Rob

2
Apple은 AppStore 제출 지침에 새로운 요구 사항을 추가했습니다.이 지침은 응용 프로그램에 따라 프롬프트를 표시합니다. 이는 iOS 5.1에서 자동 프롬프트가 제거되었음을 나타냅니다. 그러나 알림 센터 설정을 조회하는 API가 없으므로 프롬프트의 목적이 무엇인지 확실하지 않습니다. 비슷한 문제에 대한 나의 반응을보십시오 : stackoverflow.com/questions/10191006/…
Greg Greg

10
이건 말도 안돼 Apple은 개발자 나 사용자조차도 실제로 나쁜 해결 방법을 사용하지 않고 이러한 것들을 재설정 할 수 있다는 것을 인식하지 못합니까?
sudo

2
시뮬레이터에서이 작업을 시도하면 Code = 3010 "시뮬레이터에서 원격 알림이 지원되지 않습니다"라는 오류가 표시됩니다.
Thomas Zimmer

48

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


12
테스트하기 위해 새 앱 ID에 대한 인증서를 만들 필요도 없습니까?
Tony

1
와일드 카드 기반 프로비저닝 프로파일을 사용하는 경우에만 작동합니다. 그렇지 않으면 새 번들에 대한 프로파일을 작성해야합니다.
Zorayr

새 프로필을 만들어야하는 경우에도 "Fix it"버튼을 클릭하고 몇 초 동안 기다리는 것입니다. 모든 재부팅주기를 거치는 것보다 훨씬 빠릅니다.
Ilya

이것은 가장 빠른 솔루션입니다! 그것은 나를 위해 꽤 잘 작동합니다! bundle_id를 변경하면 동일한 "프로비저닝 프로필"로 앱에 서명 할 수 없습니다. 그러나 xCode (내 버전 7.1.1)에서 "수정"을 클릭하면 작업이 수행됩니다. 또한, "수정"버튼을 클릭하여 "수정"해야 할 여러 항목을 가질 수있는 "기능"onglet을 잊지 마십시오. 그러면 매우 잘 작동합니다!
Dam Fa

이 답변은 합법적 인 옵션이지만 여전히 애플의 어리석은 상황에 대한 해킹입니다. bundleID를 수정하거나 장치 시계를 전환하지 않습니다. 마찬가지로 모든 개발자는 "푸시 알림 허용?"을 묻는 UIAlertView를 보여주는 짧은 코드를 작성할 수 있습니다. .. 예 = 레지스터 메소드를 호출합니다. 아니오 = call didFailToRegisterForRemoteNotificationsWithError (etc) .. 이건 제 자신의 솔루션입니다.이 Q & A를 읽은 후의 테이크 아웃입니다. 엄밀히 말해 사용자에게 개인 정보를 알리는 가장 좋은 방법입니다. 왜 푸시를 사용하거나 선택해야합니까?
Tom Pace

36

iOS 9.0.2에서 앱을 삭제하고 다시 설치할 때마다 "푸시 알림 등록 알림"이 표시됩니다. 이는 AppStore 프로덕션 다운로드 및 임시 모드 모두에 해당됩니다.

업데이트 : 이것이 iOS 9.x에서 작동하는 것으로 확인되었습니다.


1
iOS 9.x와 동일한 동작을 경험합니다. 나는 추가하여 원래의 대답을 편집 할 추천 UPDATE를 :
예븐 두비 닌

3
드디어! 더 이상 앱을 삭제하거나, 기기를 끄거나, 시계를 앞으로 시간으로 설정하거나 이와 같은 바보 같은 것들을 더 이상 사용할 필요가 없습니다.
mkeremkeskin

19

이미 언급했듯이 장치의 앱에 대한 알림 상태를 재설정하는 방법은 iOS5에서 더 최신으로 변경되었습니다.

이것은 iOS6에서 저에게 효과적입니다.

  • 기기에서 앱 제거
  • 장치 날짜 시간을 이틀 이상 설정
  • 장치를 다시 시작
  • 장치 날짜 시간을 이틀 이상 설정
  • 장치를 다시 시작
  • 앱을 다시 설치하고 실행

그러나 이렇게하면 초기 프롬프트 만 다시 나타나게되며 다른 푸시 상태 관련 항목은 제거되지 않습니다.


ios7에서도 저를 위해 일한 적이 있습니다. 날짜가 두 번 작동하지 않습니다.
Nath

1
감사합니다! 이것은 iOS 8에서도 작동합니다 (설정의 환경 설정 창에 "앱 아이콘 배지"설정이 없으므로 Twitter.app의 푸시 권한을 재설정해야했습니다).
gklka

9

plist : /private/var/mobile/Library/RemoteNotification/Clients.plist

... 푸시 알림에 등록 된 클라이언트를 포함합니다. 앱 항목을 제거하면 프롬프트가 다시 나타납니다.


11
App Store 용으로 개발하면 쓸모없는 답변
samvermette

20
이것이 탈옥 자들에게 가능하다면 개발자가 탈옥되지 않은 전화로 할 수 있어야 하는가? 그리고 이것은 쓸모없는 답변이 아닙니다. 왜냐하면 이것은 상점에 제출하기 위해 앱에 넣은 것이 아니기 때문입니다. 개발자가 테스트하는 동안 개발자를위한 것입니다.
Oscar

1
이 파일은 iOS 5.x의 일부가 아닙니다.
gmogames

이 질문의 일부로 업데이트 된 답변을 참조하십시오 : stackoverflow.com/questions/13021066/…
AriX

7

프로그래밍 방식으로하면 매번 작동하는 것 같습니다. 다음 줄을 주석 처리하지 않은 빌드가 있습니다.

 [[UIApplication sharedApplication] unregisterForRemoteNotifications];

PN에서 등록을 취소 할 때마다 실행합니다. 최근 앱 목록에서 앱을 명시 적으로 종료하고 설정 앱의 알림 센터를 사용하여 제대로 작동해야 할 수 있습니다.

또한 사용자에게 PN 등록을 요청하는 UI 프롬프트가 표시되지 않을 수 있습니다. 최신 iOS 버전에서 사용 중지되었는지 확실하지 않습니다.


나에게 iOS 10 / iPhone 6S에서 일했습니다. 등록을 취소 한 다음 다시 설치하기 전에 앱을 삭제했습니다.
가브리엘 젠슨

5

ianolito가 말했듯이 날짜 설정은 효과가 있습니다.

시스템 시계를 하루 이상 앞으로 설정하고 장치를 완전히 끈 다음 장치를 다시 켜면 실제로 하루를 기다리지 않고 후자를 얻을 수 있습니다.

내 기기 (iPhone 4, iOS 6.1.2) 에서 하루 또는 몇 일 동안 시스템 시계를 설정해 도 작동하지 않는 것으로 나타났습니다 . 그래서 날짜를 한 달 앞으로 설정 한 다음 작동했고 응용 프로그램에 알림 메시지가 다시 표시되었습니다.

이것이 누군가에게 도움이되기를 바랍니다. 머리가 아플 수 있습니다!


1
"최신 OS"로 대답하지 마십시오. 항상 변경됩니다. 이 동작은 여전히 ​​6.1.2에서 깨진 것처럼 보이지만 6.0.1에서 작동했을까요?
patr1ck

답을 수정했지만 여전히 6.1.2에서 그리고 6.0.1에서 이전에도 이것을 유지하십시오. 적어도 날짜를 +1 개월로 설정 한 경우에만 작동합니다.
Vincent Cohen

1
나는 24 시간 일을 들었으므로 시도해 보았고 2 일 동안 작동하지 않았습니다. 3 개월 후로 설정하면 권한 팝업이 다시 나타납니다! 감사!
marcshilling

오래된 게시물이지만보기에 여전히 기쁩니다! 행운을 빕니다 :)
Vincent Cohen

5

micmdk에 동의합니다. 푸시 알림을 사용하여 개발 환경을 설정했으며 초기 설치처럼 보이도록 휴대 전화를 재설정하는 방법이 필요했습니다.이 정확한 단계 만 수행하면됩니다. 장치를 두 번 재부팅해야합니다.

APPLE TECH DOC에서 :

iOS에서 푸시 알림 권한 경고 재설정 푸시 가능 앱이 푸시 알림을 처음 등록하면 iOS는 사용자에게 해당 앱에 대한 알림을받을 것인지 묻습니다. 사용자가이 경고에 응답하면 기기를 복원하거나 앱을 하루 이상 제거하지 않으면 다시 표시되지 않습니다.

앱의 최초 실행을 시뮬레이션하려면 하루 동안 앱을 제거 된 상태로 둘 수 있습니다. 다음 단계에 따라 실제로 하루를 기다리지 않고 후자를 얻을 수 있습니다.

  1. 기기에서 앱을 삭제합니다.

  2. 장치를 완전히 껐다가 다시 켜십시오.

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

  4. 장치를 완전히 껐다가 다시 켜십시오.


이것은 더 이상 다른 답변에서 작동하지 않는 것으로 언급되었습니다.
Beau Nouvelle

잘 작동합니다. iOS 5.1에서 작동을 멈춘 것은 다른 답변 의 이전 버전으로 앱 삭제와 시계 설정 사이의 재부팅을 생략했습니다.
dgatwood

3

나는 과거에 이것에 대해 궁금해했으며 실제로 내 코드에 유효한 테스트 사례가 아니라는 결론에 도달했습니다. 응용 프로그램 코드가 실제로 알림을 처음 거부하거나 나중에 iPhone 알림 설정에서 비활성화하는 사람의 차이점을 알 수 있다고 생각하지 않습니다. 사용자 환경이 다르지만 registerForRemoteNotificationTypes 호출 안에 숨겨져 있다는 것은 사실입니다.

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


더 나은 답변을 기대하고 있었지만 답변이 하나도없는 것 같습니다. 어쨌든 고마워!
hanno

3

수락 된 답변 ( TN2265-푸시 알림 문제 해결)에서 참조한 것과 동일한 기술 노트 가 iOS 5 이상에 대한 솔루션으로 업데이트되었습니다.

한마디로 : 백업을 생성하고 매번 백업합니다.

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

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

한 번에 권장 할 수도 있지만 더 이상 권장하지 않습니다. 현재 권장 사항은 앱을 삭제하고, 재부팅하고, 시계를 앞으로 설정하고, 재부팅하고, 선택적으로 시계를 올바른 날짜와 시간으로 다시 설정하고 앱을 실행하는 것입니다.
dgatwood

2

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

또한 장치 자체 (iOS 5.x)에서 "일반-> 재설정-> 모든 컨텐츠 및 설정 지우기"옵션을 사용할 수는 없습니다.


1
가치있는 것 : 방금 '모든 설정 지우기'를 시도했지만 작동하지 않았습니다. 모든 콘텐츠 및 모든 설정을 시도 중 ...
Groxx

8
그리고 "모든 내용과 설정"은 실제로 작동합니다. 감사합니다! 그러나 거룩한 핵 옵션, 배트맨! 그것은 절대적으로 미쳤다.
Groxx

94
새 기기를 구매하면 푸시 알림 경고가 해제된다고 들었습니다.
samvermette 2016

새 장치를 구입하려고 시도했지만 작동하지 않았습니다. 새로운 기기를 천재 바로 가져간 후, 그들은 약간의 마술을 썼고 더 많은 돈을 위해 고쳐졌다 ... 나는 애플이 여전히 푸시 권한을 재설정하는 실용적이고 간단한 방법을 제공하지 않은 것에 놀랐다. 말도 안돼
Chris

1

ianolito의 답변 외에도.

1 년 전에 다운로드 한 앱과 동일한 문제가 있었으며 초기에 푸시 알림을 거부했습니다. 푸시 알림을 다시 원하면 iOS 7 베타 에서이 단계가 효과적이었습니다. 어느 지점에서 정확히 트리거했는지 확실하지 않습니다.

  • 앱을 닫고 삭제하십시오.
  • iCloud 설정으로 이동하여 iCloud에서 앱을 삭제하십시오. 앱용 iCloud 백업이 활성화 된 다른 모든 기기에서이 작업을 수행하십시오. 비활성화 및 삭제 후 새 백업을 만드십시오. 백업 아래에 앱이 더 이상 나열되지 않아야합니다. iCloud가 iOS 5에 도입되었고 많은 사람들이 앱용 iCloud 백업을 사용하기 때문에 ianolito가 기술 한 Apple의 기술 노트가 iOS 5에서 작동을 멈춘 이유 일 수 있습니다.
  • 시간 설정으로 이동하여 1 개월 이상 시간을 설정하십시오.
  • iPhone을 끄십시오 (재설정 안 함).
  • 잠시 기다렸다가 다시 켜고 앱을 다시 다운로드하십시오.
  • 앱을 시작하면 대화 상자가 다시 나타납니다.
  • 앱이 여전히 비활성화되어 있기 때문에 앱 백업을 다시 활성화하십시오. 시간을 수정하십시오.

"모든 컨텐츠 및 설정 지우기"가 필요하지 않은 신에게 감사하십시오. 어쩌면 누군가를 도울 것입니다.


1

최근에 반응 네이티브 응용 프로그램과 비슷한 문제가 발생했습니다. iPhone OS 버전은 13.1입니다. 응용 프로그램을 제거하고 앱을 설치하려고했지만 위치 및 알림 권한이 모두 표시되지 않는 것을 알았습니다.

설정을 확인하면 응용 프로그램이 이전 설치 위치에서 활성화되어 있음을 알 수 있었지만 시간을 설정하지 않고 제거 및 재부팅을 시도했다는 알림에 해당하는 항목이 없습니다. 작동하지 않았습니다. Btw, 나는 여전히 동일한 동작으로 Appstore 앱을 다운로드하려고했습니다.

장치 시간을 설정 한 후에 만 ​​문제가 해결되었습니다.


0

몇 시간 동안 검색하고 위의 제안에 운이 없으면 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
        }

    }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.