ios-unity/Classes_cocos/permission/LBXPermissionSetting.m
2022-11-25 15:08:47 +08:00

112 lines
3.8 KiB
Objective-C

//
// LBXPermissionSetting.m
// Demo
//
#import "LBXPermissionSetting.h"
#import <UIKit/UIKit.h>
@implementation LBXPermissionSetting
#pragma mark- disPlayAppPrivacySetting
+ (void)displayAppPrivacySettings
{
if (@available(iOS 8,*))
{
if (UIApplicationOpenSettingsURLString != NULL)
{
NSURL *appSettings = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if (@available(iOS 10,*)) {
[[UIApplication sharedApplication]openURL:appSettings options:@{} completionHandler:^(BOOL success) {
}];
}
else
{
[[UIApplication sharedApplication]openURL:appSettings];
}
}
}
}
/**
show dialog to guide user to show App privacy setting
@param title title
@param message privacy message
@param cancel cancel button text
@param setting setting button text,if user tap this button ,will show App privacy setting
*/
+ (void)showAlertToDislayPrivacySettingWithTitle:(NSString*)title
msg:(NSString*)message
cancel:(NSString*)cancel
setting:(NSString*)setting
{
[self showAlertToDislayPrivacySettingWithTitle:title msg:message cancel:cancel setting:setting completion:nil];
}
/**
show dialog to guide user to show App privacy setting
@param title title
@param message privacy message
@param cancel cancel button text
@param setting setting button text,if user tap this button ,will show App privacy setting
@param completion user has been choosed
*/
+ (void)showAlertToDislayPrivacySettingWithTitle:(NSString*)title
msg:(NSString*)message
cancel:(NSString*)cancel
setting:(NSString*)setting
completion:(void(^)(void))completion
{
if (@available(iOS 8,*)) {
UIAlertController* alertController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert];
//cancel
UIAlertAction *action = [UIAlertAction actionWithTitle:cancel style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
if (completion) {
completion();
}
}];
[alertController addAction:action];
//ok
UIAlertAction *okAction = [UIAlertAction actionWithTitle:setting style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
if (completion) {
completion();
}
[self displayAppPrivacySettings];
}];
[alertController addAction:okAction];
[[self currentTopViewController] presentViewController:alertController animated:YES completion:nil];
}
}
+ (UIViewController*)currentTopViewController
{
UIViewController *currentViewController = [UIApplication sharedApplication].delegate.window.rootViewController;
while ([currentViewController presentedViewController]) currentViewController = [currentViewController presentedViewController];
if ([currentViewController isKindOfClass:[UITabBarController class]]
&& ((UITabBarController*)currentViewController).selectedViewController != nil )
{
currentViewController = ((UITabBarController*)currentViewController).selectedViewController;
}
while ([currentViewController isKindOfClass:[UINavigationController class]]
&& [(UINavigationController*)currentViewController topViewController])
{
currentViewController = [(UINavigationController*)currentViewController topViewController];
}
return currentViewController;
}
@end