Skip to content

Commit b2084ff

Browse files
Simon-entps2darinkrauss
authored andcommitted
feat(permissions): add critical alerts notifications permission. (#112)
* New flag added for critical alerts * Permissions tests * import fix in main.m and project changes to test * reverting FMDB name change to match main * Added critical flag to notifications * Removed critical alerts top level flag * Reverted changes to main storyboard in PermissionsTest * Requested changes Co-authored-by: ps2 <[email protected]> Co-authored-by: darinkrauss <[email protected]>
1 parent ba166f7 commit b2084ff

File tree

4 files changed

+8
-4
lines changed

4 files changed

+8
-4
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ Available Permissions:
5656
medialibrary=YES|NO|unset
5757
microphone=YES|NO|unset
5858
motion=YES|NO|unset
59-
notifications=YES|NO|unset
59+
notifications=YES|NO|critical|unset
6060
photos=YES|NO|limited|unset (“limited” supported on iOS/tvOS 14.0 and above)
6161
reminders=YES|NO|unset
6262
siri=YES|NO|unset

applesimutils/applesimutils/SetNotificationsPermission.m

+3-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ + (BOOL)setNotificationsStatus:(NSString*)status forBundleIdentifier:(NSString*)
2020
return [self _setSectionInfoData:nil forBundleIdentifier:bundleIdentifier displayName:displayName simulatorIdentifier:simulatorId error:error];
2121
}
2222

23-
BOOL enabled = [status boolValue];
23+
BOOL isCriticalEnabled = [status isEqualToString:@"critical"];
24+
BOOL enabled = [status boolValue] || isCriticalEnabled;
2425

2526
static NSString* const b64S = @"YnBsaXN0MDDUAQIDBAUGTU5YJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCDAxQUgfSVUkbnVsbN8QFQkKCwwNDg8QERITFBUWFxgZGhscHR4fHiEiIx4jJicfHygjIh8jIyMjI18QFHN1cHByZXNzRnJvbVNldHRpbmdzXxASc3VwcHJlc3NlZFNldHRpbmdzWmhpZGVXZWVBcHBZc2VjdGlvbklEW2Rpc3BsYXlOYW1lVGljb25fEBlkaXNwbGF5c0NyaXRpY2FsQnVsbGV0aW5zW3N1YnNlY3Rpb25zXxATc2VjdGlvbkluZm9TZXR0aW5nc1YkY2xhc3NfEA9zZWN0aW9uQ2F0ZWdvcnlfEBJzdWJzZWN0aW9uUHJpb3JpdHlXdmVyc2lvbl8QGm1hbmFnZWRTZWN0aW9uSW5mb1NldHRpbmdzV2FwcE5hbWVbc2VjdGlvblR5cGVfEBBmYWN0b3J5U2VjdGlvbklEXxAPZGF0YVByb3ZpZGVySURzXHN1YnNlY3Rpb25JRFdmaWx0ZXJzXxAYcGF0aFRvV2VlQXBwUGx1Z2luQnVuZGxlCBAACIACgAWAAAiAAIADgAeABoAAgAWAAIAAgACAAIAAXxAmY29tLkxlb05hdGFuLkxOUG9wdXBDb250cm9sbGVyRXhhbXBsZS3ZMjM0NTY3Ejg5Ojs7Ox8fPjtAXHB1c2hTZXR0aW5nc18QGXNob3dzSW5Ob3RpZmljYXRpb25DZW50ZXJfEBNhbGxvd3NOb3RpZmljYXRpb25zXxAWc2hvd3NPbkV4dGVybmFsRGV2aWNlc18QFWNvbnRlbnRQcmV2aWV3U2V0dGluZ15jYXJQbGF5U2V0dGluZ18QEXNob3dzSW5Mb2NrU2NyZWVuWWFsZXJ0VHlwZRA/CQkJgAQJEAHSQkNERVokY2xhc3NuYW1lWCRjbGFzc2VzXxAVQkJTZWN0aW9uSW5mb1NldHRpbmdzokZHXxAVQkJTZWN0aW9uSW5mb1NldHRpbmdzWE5TT2JqZWN0V0xOUG9wdXDSQkNKS11CQlNlY3Rpb25JbmZvokxHXUJCU2VjdGlvbkluZm9fEA9OU0tleWVkQXJjaGl2ZXLRT1BUcm9vdIABAAgAEQAaACMALQAyADcAQABGAHMAigCfAKoAtADAAMUA4QDtAQMBCgEcATEBOQFWAV4BagF9AY8BnAGkAb8BwAHCAcMBxQHHAckBygHMAc4B0AHSAdQB1gHYAdoB3AHeAeACCQIcAikCRQJbAnQCjAKbAq8CuQK7ArwCvQK+AsACwQLDAsgC0wLcAvQC9wMPAxgDIAMlAzMDNgNEA1YDWQNeAAAAAAAAAgEAAAAAAAAAUQAAAAAAAAAAAAAAAAAAA2A=";
2627

@@ -30,6 +31,7 @@ + (BOOL)setNotificationsStatus:(NSString*)status forBundleIdentifier:(NSString*)
3031

3132
propList[@"$objects"][2] = bundleIdentifier;
3233
propList[@"$objects"][3][@"allowsNotifications"] = @(enabled);
34+
propList[@"$objects"][3][@"criticalAlertSetting"] = isCriticalEnabled ? @2 : @0;
3335
propList[@"$objects"][5] = displayName;
3436

3537
NSData* sectionInfoData = CFBridgingRelease(CFPropertyListCreateData(NULL, (__bridge CFTypeRef)propList, kCFPropertyListBinaryFormat_v1_0, 0, NULL));

applesimutils/applesimutils/main.m

+2-2
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ static BOOL performPermissionsPass(NSString* permissionsArgument, NSString* simu
307307
}
308308
else if([permission isEqualToString:@"notifications"])
309309
{
310-
assertStringInArrayValues(value, @[@"YES", @"NO", @"unset"], -10, [NSString stringWithFormat:@"Error: Illegal value “%@” parsed for permission “%@”.", value, permission]);
310+
assertStringInArrayValues(value, @[@"YES", @"NO", @"critical", @"unset"], -10, [NSString stringWithFormat:@"Error: Illegal value “%@” parsed for permission “%@”.", value, permission]);
311311

312312
success = [SetNotificationsPermission setNotificationsStatus:value forBundleIdentifier:bundleIdentifier displayName:bundleIdentifier simulatorIdentifier:simulatorIdentifier error:&err];
313313

@@ -506,7 +506,7 @@ int main(int argc, const char* argv[]) {
506506
@"medialibrary=YES|NO|unset",
507507
@"microphone=YES|NO|unset",
508508
@"motion=YES|NO|unset",
509-
@"notifications=YES|NO|unset",
509+
@"notifications=YES|NO|critical|unset",
510510
@"photos=YES|NO|limited|unset (“limited” supported on iOS/tvOS 14.0 and above)",
511511
@"reminders=YES|NO|unset",
512512
@"siri=YES|NO|unset",

sample/PermissionsTest/PermissionsTest/PermissionsTest.entitlements

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
<dict>
55
<key>com.apple.developer.healthkit</key>
66
<true/>
7+
<key>com.apple.developer.usernotifications.critical-alerts</key>
8+
<true/>
79
<key>com.apple.developer.healthkit.access</key>
810
<array/>
911
</dict>

0 commit comments

Comments
 (0)