Ecprivacychecktools

iOS 系统隐私权限检测工具。iOS system privacy permission check tools.
Alternatives To Ecprivacychecktools
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Vimac2,956
5 months ago133gpl-3.0Swift
Productive macOS keyboard-driven navigation
Echoplexus393
7 years ago63otherCoffeeScript
Socket.io powered chat, JavaScript REPL, whiteboard, and WebRTC calls
Exodus Android App389
2 days ago36gpl-3.0Kotlin
εxodus Android application
Ecprivacychecktools172
3 years ago6mitObjective-C
iOS 系统隐私权限检测工具。iOS system privacy permission check tools.
Vwwpermissionkit142
43 years ago4December 12, 20159mitObjective-C
A visual permission manager for iOS
Tick.chat57
4 months ago29JavaScript
Chat via nearby persons. Instant, Secure, Anonymously. 🕶
Privacy Friendly Shopping List56
a month ago55apache-2.0Java
Privacy Friendly App to create and manage shoppings lists on Android devices.
Privacy Friendly Finance Manager30
7 days ago24gpl-3.0Java
Agora Unreal Sdk Blueprint25
9 months ago10C++
Agora Unreal SDK - Blueprint (Beta)
Ios Permissions Service22
4 years ago1otherSwift
An easy way to do permissions requests & handling automatically.
Alternatives To Ecprivacychecktools
Select To Compare


Alternative Project Comparisons
Readme

ECPrivacyCheckTools

ECPrivacyCheckTools 2.0.0 20200608

& bug fix

  1. ECPrivacyCheckTools 2.0.0

    • iOS 7.0
    • iOS 13.0 API
    • bug fix
  2. 20171211 bugiOS11plistNSPhotoLibraryAddUsageDescription

<key>NSPhotoLibraryAddUsageDescription</key>
<string></string>
  1. 20170731 bugiOS7
// ALAuthorizationStatus  ALAuthorizationStatusNotDetermined
// alertView
// alertView
__block BOOL isShow = YES;
ALAssetsLibrary *assetLibrary = [[ALAssetsLibrary alloc] init];
[assetLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
if (isShow) {
[self executeCallBack:accessStatusCallBack accessStatus:ECAuthorizationStatus_Authorized type:ECPrivacyType_Photos];
isShow = NO;
}
} failureBlock:^(NSError *error) {
[self executeCallBack:accessStatusCallBack accessStatus:ECAuthorizationStatus_Denied type:ECPrivacyType_Photos];
}];

Abstract

2.0 iOS 8.0 ECPrivacyCheckTools_Example gitissues

Features & Requirements &

  • iOS 8.0 +
  • ARC
  • 2.0.0

iPhone - -

LocationServices       
Contacts               
Calendars              
Reminders              
Photos                 
Bluetooth              
Microphone             
SpeechRecognition       >= iOS 10.0
Camera                 
Health                  >= iOS 8.0
HomeKit                HomeKit >= iOS 8.0
MediaAndAppleMusic     Apple Music >= iOS9.3
FilesAndFolders        
MotionAndFitness       

01.PNG

plist
<key>NSAppleMusicUsageDescription</key>
	<string>Add tracks to your music library.</string>
	<key>NSBluetoothPeripheralUsageDescription</key>
	<string></string>
	<key>NSBluetoothAlwaysUsageDescription</key>
	<string></string>
	<key>NSCalendarsUsageDescription</key>
	<string></string>
	<key>NSCameraUsageDescription</key>
	<string></string>
	<key>NSContactsUsageDescription</key>
	<string></string>
	<key>NSHealthShareUsageDescription</key>
	<string></string>
	<key>NSHealthUpdateUsageDescription</key>
	<string></string>
	<key>NSHomeKitUsageDescription</key>
	<string></string>
	<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
	<string></string>
	<key>NSLocationWhenInUseUsageDescription</key>
	<string></string>
	<key>NSMicrophoneUsageDescription</key>
	<string></string>
	<key>NSMotionUsageDescription</key>
	<string></string>
	<key>NSPhotoLibraryAddUsageDescription</key>
	<string></string>
	<key>NSPhotoLibraryUsageDescription</key>
	<string></string>
	<key>NSRemindersUsageDescription</key>
	<string></string>
	<key>NSSiriUsageDescription</key>
	<string>SiriSiri</string>
	<key>NSSpeechRecognitionUsageDescription</key>
	<string></string>
	<key>NSVideoSubscriberAccountUsageDescription</key>
	<string>TV</string>

Content

Uage

  • ECPrivacyCheckGatherTool
  • ECPrivacyCheckTools ECPrivacyCheckGatherTool.h ECPrivacyCheckGatherTool.m
  • API
    • ECPrivacyCheckTools/Core .h .m
    • API

Code Example

// MARK: -  LocationServices
/** 
 *

 *  ECLBSAuthorizationStatusUnable
 *  ECLBSAuthorizationStatusNotDetermined
 *  ECLBSAuthorizationStatusRestricted:
 *  ECLBSAuthorizationStatusDenied
 *  ECLBSAuthorizationStatusAuthorizedAlways
 *  ECLBSAuthorizationStatusAuthorizedWhenInUse
 *  ECLBSAuthorizationStatusAuthorizediOS2.0~8.0> iOS 8.0  ECLBSAuthorizationStatusAuthorizedAlways 
    */
    typedef NS_ENUM(NSInteger, ECLBSAuthorizationStatus) {
     ECLBSAuthorizationStatusUnable = -1,
     ECLBSAuthorizationStatusNotDetermined = 0,
     ECLBSAuthorizationStatusRestricted,
     ECLBSAuthorizationStatusDenied,
     ECLBSAuthorizationStatusAuthorizedAlways,
     ECLBSAuthorizationStatusAuthorizedWhenInUse,
     ECLBSAuthorizationStatusAuthorized API_DEPRECATED("Use ECLBSAuthorizationStatusAuthorizedAlways", ios(2.0, 8.0)) = ECLBSAuthorizationStatusAuthorizedAlways
    };

/// 

+ (ECLBSAuthorizationStatus)locationAuthorizationStatus;

/// 

- (ECLBSAuthorizationStatus)locationAuthorizationStatus;

/// 
/// @param completionHandler completionHandler

- (void)requestLocationAuthorizationWithCompletionHandler:(void(^)(ECLBSAuthorizationStatus status))completionHandler;

// MARK: -  Photos
/** 

 *  ECAuthorizationStatusUnable
 *  ECAuthorizationStatusNotDetermined
 *  ECAuthorizationStatusRestricted:
 *  ECAuthorizationStatusDenied
 *  ECAuthorizationStatusAuthorized
    */
    typedef NS_ENUM(NSInteger, ECAuthorizationStatus) {
    ECAuthorizationStatusUnable = -1,
    ECAuthorizationStatusNotDetermined = 0,
    ECAuthorizationStatusRestricted,
    ECAuthorizationStatusDenied,
    ECAuthorizationStatusAuthorized
    };

/// 

+ (ECAuthorizationStatus)photosAuthorizationStatus;

/// 

- (ECAuthorizationStatus)photosAuthorizationStatus;

/// 
/// @param completionHandler completionHandler

+ (void)requestPhotosAuthorizationWithCompletionHandler:(void(^)(BOOL granted))completionHandler;

// MARK: - Bluetooth 
/** 
 *

 * ECCBAuthorizationStateUnknown

 * ECCBAuthorizationStateResetting

 * ECCBAuthorizationStateUnsupported

 * ECCBAuthorizationStateUnauthorized

 * ECCBAuthorizationStatePoweredOff

 * ECCBAuthorizationStatePoweredOn
   */
   typedef NS_ENUM(NSInteger, ECCBAuthorizationState) {

   ECCBAuthorizationStateUnknown = 0,
   ECCBAuthorizationStateResetting,
   ECCBAuthorizationStateUnsupported,
   ECCBAuthorizationStateUnauthorized,
   ECCBAuthorizationStatePoweredOff,
   ECCBAuthorizationStatePoweredOn
   };

/// 
/// @param completionHandler completionHandler

- (void)requestBluetoothAuthorizationWithCompletionHandler:(void(^)(ECCBAuthorizationState state))completionHandler;

// MARK: -  Contacts
/** 

 *  ECAuthorizationStatusUnable
 *  ECAuthorizationStatusNotDetermined
 *  ECAuthorizationStatusRestricted:
 *  ECAuthorizationStatusDenied
 *  ECAuthorizationStatusAuthorized
    */
    typedef NS_ENUM(NSInteger, ECAuthorizationStatus) {
    ECAuthorizationStatusUnable = -1,
    ECAuthorizationStatusNotDetermined = 0,
    ECAuthorizationStatusRestricted,
    ECAuthorizationStatusDenied,
    ECAuthorizationStatusAuthorized
    };

/// 

+ (ECAuthorizationStatus)contactsAuthorizationStatus;

/// 

- (ECAuthorizationStatus)contactsAuthorizationStatus;

/// 
/// @param completionHandler completionHandler

+ (void)requestContactsAuthorizationWithCompletionHandler:(void(^)(BOOL granted))completionHandler;

/// 
/// @param completionHandler completionHandler

- (void)requestContactsAuthorizationWithCompletionHandler:(void(^)(BOOL granted))completionHandler;
- (void)checkLBS:(NSInteger)buttonIndex {
    if (buttonIndex == 1) {
        ECLBSAuthorizationStatus status = [ECPrivacyCheckGatherTool locationAuthorizationStatus];
        ECAlertShow(@"", [NSString stringWithFormat:@"%ld", (long)status], @"", ^{
        });
    } else {
        self.gatherTools = [[ECPrivacyCheckGatherTool alloc] init];
        [self.gatherTools requestLocationAuthorizationWithCompletionHandler:^(ECLBSAuthorizationStatus status) {
            if (status == ECLBSAuthorizationStatusAuthorizedAlways) {
                [ECAlert showConfirmAlertWithMessage:@"" completion:nil];
            } else if (status == ECLBSAuthorizationStatusAuthorizedWhenInUse) {
                [ECAlert showConfirmAlertWithMessage:@"APP" completion:nil];
            } else if ((status == ECLBSAuthorizationStatusRestricted) || (status == ECLBSAuthorizationStatusDenied)) {
                [ECAlert showConfirmAlertWithMessage:@"APP" completion:nil];
            } else {
                NSLog(@"ECLBSAuthorizationStatusNotDetermined,");
            }
        }];
    }
}
/// 
/// @param completionHandler completionHandler
- (void)requestPhotosAuthorizationWithCompletionHandler:(void(^)(BOOL granted))completionHandler;

- (void)checkPhotos:(NSInteger)buttonIndex {
    if (buttonIndex == 1) {
        ECAuthorizationStatus status = [ECPrivacyCheckGatherTool photosAuthorizationStatus];
        ECAlertShow(@"", [NSString stringWithFormat:@"%ld", (long)status], @"", ^{
        });
    } else {
        [ECPrivacyCheckGatherTool requestPhotosAuthorizationWithCompletionHandler:^(BOOL granted) {
            if (granted) {
                [ECAlert showConfirmAlertWithMessage:@"" completion:nil];
            } else {
                [ECAlert showConfirmAlertWithMessage:@"APP" completion:nil];
            }
        }];
    }
}
- (void)checkContact:(NSInteger)buttonIndex {
    if (buttonIndex == 1) {
        ECAuthorizationStatus status = [ECPrivacyCheckGatherTool contactsAuthorizationStatus];
        ECAlertShow(@"", [NSString stringWithFormat:@"%ld", (long)status], @"", ^{
        });
    } else {
        [ECPrivacyCheckGatherTool requestContactsAuthorizationWithCompletionHandler:^(BOOL granted) {
            if (granted) {
                [ECAlert showConfirmAlertWithMessage:@"" completion:nil];
            } else {
                [ECAlert showConfirmAlertWithMessage:@"APP" completion:nil];
            }
        }];
    }
}
- (void)checkBluetooth:(NSInteger)buttonIndex {
    // 
    self.bluetoohTools = [[ECPrivacyCheckBluetooth alloc] init];
    
    [self.bluetoohTools requestBluetoothAuthorizationWithCompletionHandler:^(ECCBAuthorizationState state) {
        if (state == ECCBAuthorizationStatePoweredOn) {
            ECAlertShow(@"", @"", @"", nil);
        } else if (state == ECCBAuthorizationStatePoweredOff) {
            ECAlertShow(@"", @"", @"", nil);
        } else if (state == ECCBAuthorizationStateUnauthorized) {
            ECAlertShow(@"", @"", @"", nil);
        } else if (state == ECCBAuthorizationStateUnsupported) {
            ECAlertShow(@"", @"", @"", nil);
        } else if (state == ECCBAuthorizationStateResetting) {
            ECAlertShow(@"", @"", @"", nil);
        } else {
            // ECCBAuthorizationStateUnknown
            ECAlertShow(@"", @"", @"", nil);
        }
    }];
}
Demo

02.PNG

######DemoCopy

Author

License

ECPrivacyCheckTools is available under the MIT license. See the LICENSE file for more info.

Popular Permission Projects
Popular Privacy Projects
Popular Security Categories

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Permission
Iphone
Privacy
Arc
Plist