

GitHub - ralcr/ConsentKit: Swift library to help you add GDPR functionality to y...
source link: https://github.com/ralcr/ConsentKit
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

README.md
ConsentKit
Note: This library only helps you collect consents for the services in your app that needs it, actually disabling those services is developer's job.
Usage
Define the services in your app needing the user consent
Note: Some generic services can be found in ConsentKitServices
enum Services: String, ConsentKitItem { case icloud = "iCloud" case analytics = "analytics" func title() -> String { switch self { case .icloud: return "iCloud" case .analytics: return "Google analytics" } } func description() -> String { switch self { case .icloud: return "Wether to accept iCloud or not" case .analytics: return "Google analytics" } } func alertMessage() -> String { switch self { case .icloud: return "I hereby accept this app to store my data in the Apple's iCloud!" case .analytics: return "I hereby accept this app to store analytics in Google analytics!" } } }
In the flow of your app where you need consent, instantiate the lib
let gdpr = ConsentKit()
Check if you have missing consents
If yes, add the default ConsentKitViewController to handle all the switches for you. One item is a touple of (ConsentKitItem, Bool)
if gdpr.needsReviewing([Services.icloud, Services.analytics]) { let vc = ConsentKitViewController() vc.items = [ (Services.icloud, gdpr.isAccepted(Services.icloud)), (Services.analytics, gdpr.isAccepted(Services.analytics)), (ConsentKitServices.location, gdpr.isAccepted(ConsentKitServices.location)) ] self.present(vc, animated: true) }
Custom storage
By default ConsentKit keeps values in UserDefaults, but you can change that with the gdpr.dataSource property. Just assign or pass through constructor a class implementing the ConsentKitDataSource
let gdpr = ConsentKit(dataSource: InMemoryDataSource())// InMemoryDataSource implements ConsentKitDataSource protocol ConsentKitDataSource { func isAccepted (_ item: ConsentKitItem) -> Bool func isReviewed (_ item: ConsentKitItem) -> Bool func setAccepted (_ value: Bool, for item: ConsentKitItem) func reset (_ item: ConsentKitItem)// Optional }
Contribution
Help me create a generic list of services that people can use without wasting time thinking and writing them. I started this file, ConsentKitServices, for this purpose, so if you know new services or better texts please go ahead and make pull requests or create issues so we can discuss them. Thanks.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK