Reputation: 10213
I could not find a solution for this and dumbfounded on this. I have this code :
UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert |
UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
[[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:authOptions
completionHandler:^(BOOL granted, NSError * _Nullable error) {
NSLog(@"%i %@",granted, error);
}];
and then it immediately gets into the call handler without showing the notification permission
2020-09-18 18:05:46.657991-0700 My App [404:9600] 0 Error Domain=UNErrorDomain Code=1 "Notifications are not allowed for this application" UserInfo={NSLocalizedDescription=Notifications are not allowed for this application}
What am i missing? The alert does not even popup.
NOTE: This same code works with no issues on iOS 13.x, on iOS 14 it immediately fails.
Upvotes: 6
Views: 2294
Reputation: 138
I had the same problem. The other posters are right that it seems to be a non-English character in the app name (mine was ñ), for some reason that's disallowed.
To get around it I added CFBundleDisplayName
to my plist and put the app's "correct" name (with the ñ) in there, and removed that character from the ${PRODUCT_NAME}
.
Upvotes: 0
Reputation: 850
My problem was to use Turkish characters in the Product Name section.
https://developer.apple.com/forums/thread/660648
In my case, Build Settings - Packaging - Product Name was not English. Changed to English and worked.
Upvotes: 3
Reputation: 10213
My product name was in Japanese. When the product name is non-english the above issue happens! If I change the product name to English it works! I have filed an issue via Apple Feedback Assistant.
Upvotes: 0
Reputation: 535316
The problem is you omitted a step. Before asking for authorization, call getNotificationSettingsWithCompletionHandler:
and look at the authorizationStatus
of the resulting object. If it is UNAuthorizationStatusDenied there is no point proceeding.
Upvotes: 0