잘 돌아가던 푸시가 iOS 14로 버전업 되면서 작동하지 않는 버그가 발생했다.
오류가 발생했는지 조차 파악이 안되는 아주 악질적인 버그로
버그를 인지하게 된 경위는 다음과 같다.
내 앱은 카톡처럼 푸시가 왔을 때 카운팅을 해주지 않고 didFinishLaunchingWithOptions 에서 무조건 뱃지를 0으로 초기화 해주고 있었는데 iOS 14로 올라간 이후부터 뱃지가 계속 1로 표시되고 있음을 발견할 수 있었다.
소스를 돌려보니 충실히 application.applicationIconBadgeNumber = 0; 코드가 동작되고 있었지만 여전히 뱃지 카운트가 1로 표시되었다.
조금 더 살펴보니 푸시를 등록해주는 소스단에서 에러로 빠짐이 확인되었고
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
center.delegate = self;
[center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge)
completionHandler:^(BOOL granted, NSError * _Nullable error) {
if( !error ) {
// required to get the app to do anything at all about push notifications
dispatch_async(dispatch_get_main_queue(), ^{
[[UIApplication sharedApplication] registerForRemoteNotifications];
});
NSLog( @"Push registration success." );
} else {
NSLog( @"Push registration FAILED" );
NSLog( @"ERROR: %@ - %@", error.localizedFailureReason, error.localizedDescription );
NSLog( @"SUGGESTIONS: %@ - %@", error.localizedRecoveryOptions, error.localizedRecoverySuggestion );
}
}];
반나절 가량 삽질한 끝에 원인을 알아내었다.
https://developer.apple.com/forums/thread/660648
보다시피 앱 이름이 영어가 아니면 푸시토큰을 등록할수도 푸시를 허용할지도 물어보질 않는다.
iOS 13 상태에서 이미 푸시토큰을 등록해 사용해왔고 iOS 14로 업그레이드를 한 후에도 여전히 푸시가 잘 도착하였기에 상상도 못할 치명적인 버그였다.
정말 웃기는건 앱스토어에 올라가 있던 서비스 중인 앱을 다운받아도 마찬가지로 뱃지가 1로 표시된다란 점이다.
해결방법은 조금 간단하다.
먼저 Target > Build Settings > Packaging > Product Name을 영어로 바꿔준 후
Info.plist에서 Bundle Name을 $(PRODUCT_NAME)에서 원하는 한글이름으로 바꿔주면 푸시 등록 과정은 기존 iOS 13처럼 정상 처리가 가능하다.
진짜... 이런 악질적인 버그를 내고도 애플은 아무런 안내가 없으니 ㅡㅡ
'모바일 & 앱' 카테고리의 다른 글
MSSQL 이상한 SELECT CONVERT QUERY 예외 (0) | 2020.12.09 |
---|---|
64bit 윈도우에서 classic asp에서 32bit용 aspftp.dll 사용하기 (0) | 2020.10.28 |
xcode pod update install 시 No such file or directory 오류 해결방법 (0) | 2020.10.06 |
SSL, HTTP, HTTPS 크로스사이트와 혼합콘텐츠 (혼합컨텐츠) 해결 방법 (0) | 2020.09.21 |
ckeditor 문자열 치환 (0) | 2020.08.28 |