All Projects → MFlisar → Gdprdialog

MFlisar / Gdprdialog

Licence: apache-2.0
GDPR fragment dialog implementation

Programming Languages

java
68154 projects - #9 most used programming language

Labels

Projects that are alternatives of or similar to Gdprdialog

Presidio
Context aware, pluggable and customizable data protection and anonymization SDK for text and images
Stars: ✭ 1,320 (+570.05%)
Mutual labels:  gdpr
Cookiescanner
Cookie Scanner for GDPR compliance
Stars: ✭ 126 (-36.04%)
Mutual labels:  gdpr
Immudb
immudb - world’s fastest immutable database, built on a zero trust model
Stars: ✭ 3,743 (+1800%)
Mutual labels:  gdpr
Data Protection Mapping Project
Open Source Data Protection/Privacy Regulatory Mapping Project
Stars: ✭ 96 (-51.27%)
Mutual labels:  gdpr
Amazon S3 Find And Forget
Amazon S3 Find and Forget is a solution to handle data erasure requests from data lakes stored on Amazon S3, for example, pursuant to the European General Data Protection Regulation (GDPR)
Stars: ✭ 115 (-41.62%)
Mutual labels:  gdpr
Trackless
Add a GDPR-friendly Google Analytics opt-in/opt-out button to your site
Stars: ✭ 127 (-35.53%)
Mutual labels:  gdpr
Securityprivacyreferencearchitecture
Open Repository for the Open Security and Privacy Reference Architecture
Stars: ✭ 73 (-62.94%)
Mutual labels:  gdpr
Laravel Gdpr
GDPR compliance with ease.
Stars: ✭ 189 (-4.06%)
Mutual labels:  gdpr
Databunker
Secure storage for personal records built to comply with GDPR
Stars: ✭ 122 (-38.07%)
Mutual labels:  gdpr
Awesome Virgil
Key Management and Crypto Building Block for your App or Device.
Stars: ✭ 146 (-25.89%)
Mutual labels:  gdpr
Zentity
Entity resolution for Elasticsearch.
Stars: ✭ 97 (-50.76%)
Mutual labels:  gdpr
Data Processing Agreements
Collection of Data Processing Agreement (DPA) and GDPR compliance resources
Stars: ✭ 110 (-44.16%)
Mutual labels:  gdpr
Gdpr
This plugin is meant to assist a Controller, Data Processor, and Data Protection Officer (DPO) with efforts to meet the obligations and rights enacted under the GDPR.
Stars: ✭ 141 (-28.43%)
Mutual labels:  gdpr
Pactmaker
Starter workflow for creating electronically signed PDF agreements.
Stars: ✭ 96 (-51.27%)
Mutual labels:  gdpr
Ml privacy meter
Machine Learning Privacy Meter: A tool to quantify the privacy risks of machine learning models with respect to inference attacks, notably membership inference attacks
Stars: ✭ 167 (-15.23%)
Mutual labels:  gdpr
Datadefender
Sensitive Data Management: Data Discovery and Anonymization toolkit
Stars: ✭ 79 (-59.9%)
Mutual labels:  gdpr
Cloudkitgdpr
Framework for allowing users to manage data stored in iCloud
Stars: ✭ 126 (-36.04%)
Mutual labels:  gdpr
Awesome Iam
👤 Identity and Access Management Knowledge for Cloud Platforms
Stars: ✭ 186 (-5.58%)
Mutual labels:  gdpr
Goaccess
GoAccess is a real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems or through your browser.
Stars: ✭ 14,096 (+7055.33%)
Mutual labels:  gdpr
Gdpr Tracker
A crowdsourced directory tracking the compliance and security practices of cloud services and their subprocessors
Stars: ✭ 142 (-27.92%)
Mutual labels:  gdpr

GDPRDialog Release Localisation

Simple reusable DialogFragment.

GDPR Demo1 GDPR Demo2

What it offers

This library offers following:

  • supports DialogFragment or BottomSheetDialogFragment style
  • supports multiple services, already defined ones are AdMob and Firebase
  • supports intermediator services as well, also supports to load your ad providers from AdMob
  • supports custom service definitions
  • is set up via a setup class that allows you to select which possibilities you give the user - any combination of personalised ads, non personalised ads and paid version, depending on what you want. Examples:
    • allow personalised ads or paid version only
    • allow personalised ads, non personalised ads or paid or free version
    • combine whatever you want here...
  • optionally enable location checks (supports google's check from the SDK via the internet, TelephoneManager, TimeZone, Locale) and also allows to define to use fallback methods, by providing your own list of checks sorted by their priority
  • optionally adds a Checkbox for age confirmation
  • uses soft opt in by default if you offer e.g. a personalised ads vs non personalised ads version
  • it closes the app if the user did not give any consent (i.e if the user clicks the back button in the dialog)
  • it manages the user's selected consent decision and remembers it (including location, date and app version)
  • it automatically reshows the dialog if the user did not give any consent or if the setup defines that the app is not allowed to be used without ads and the user has not accepted ads at all yet

GDPR and law safety

Such dialogs must always be adjusted to the use case in general, although this one should be fine in most cases.

Checkout following to find out more: EU GDPR

Just to make this clear, I'm no lawyer and I can't guarantee that you are save if you use this library.

Gradle (via JitPack.io)

  1. add jitpack to your project's build.gradle:
repositories {
    maven { url "https://jitpack.io" }
}
  1. add the compile statement to your module's build.gradle:
dependencies {
     implementation 'com.github.MFlisar:GDPRDialog:LATEST-VERSION'
}

LATEST-VERSION: Release

Usage

  1. Init the singleton in your application
GDPR.getInstance().init(this);
  1. call following in your activities onCreate
GDPRSetup setup = new GDPRSetup(GDPRDefinitions.ADMOB) // add all networks you use to the constructor, signature is `GDPRSetup(GDPRNetwork... adNetworks)`
    // everything is optional, but you should at least provide your policy
    .withPrivacyPolicy("www.my-privacy-policy.com")
    .withAllowNoConsent(true)
    .withPaidVersion(allowNonPersonalisedOptionAsWell)
    .withExplicitAgeConfirmation(true)
    .withCheckRequestLocation(GDPRLocationCheck.DEFAULT) // pass in an array of location check methods, predefined arrays like `DEFAULT` and `DEFAULT_WITH_FALLBACKS` do exists
    .withCheckRequestLocationTimeouts(readTimeout, connectTimeout)
    .withBottomSheet(true)
    .withForceSelection(true)
    .withCustomDialogTheme(theme)
    .withShortQuestion(true)
    .withLoadAdMobNetworks(publisherId(s)) // e.g. "pub-0123456789012345"
    .withNoToolbarTheme(noToolbarTheme) // true, if you use a theme without a toolbar, false otherwise
    .withShowPaidOrFreeInfoText(true) // show the info that this app is cheap/free based on the networks or hide it
    .withCustomTexts(customTexts) // provide custom texts (title, top message, main message, question text, age confirmation text) by resource or string
;
GDPR.getInstance().checkIfNeedsToBeShown(this /* extends AppCompatActivity & GDPR.IGDPRCallback */, setup);
  1. implement the GDPR.IGDPRCallback in your activity
public class ExampleActivity extends AppCompatActivity implements GDPR.IGDPRCallback {
    @Override
    public void onConsentInfoUpdate(GDPRConsentState consentState, boolean isNewState) {
        // handle consent here
		
    }
	
    @Override
    public void onConsentNeedsToBeRequested() {
        // we need to get consent, so we show the dialog here
        GDPR.getInstance().showDialog(this, mSetup);
    }
}
  1. Other usages
// get current consent anywhere in the app after user has given consent
GDPRConsentState consentState = GDPR.getInstance().getConsentState();
// get location, time, app version of given consent
GDPRConsent consent = consentState.getConsent(); // the given constent
GDPRLocation location = consentState.getLocation(); // where has the given consent been given
long date = consentState.getDate(); // when has the given consent been given
int appVersion = consentState.getVersion(); // in which app version has the consent been given
// check if you can use personal informations or not
boolean canCollectPersonalInformation = GDPR.getInstance().canCollectPersonalInformation();

Check out the MinimalDemo to get something to start with or check out the DemoActivity with the example setups for a more complex example

Where can I add additional networks?

You can simply do this in the GDPRDefinitions. Of course you can always define new networks in project only as well, but if you think you use a service many others do use as well, fell free to add it to the definitions.

Migration

Migrations will be explained in the release notes

TODO

  • [ ] Localisation Localisation

    At least translations for all official languages within the european union should be added

    • [ ] Bulgarian
    • [ ] Croatian
    • [x] Czech
    • [ ] Danish
    • [ ] Dutch
    • [x] English
    • [ ] Estonian
    • [ ] Finnish
    • [x] French
    • [x] German
    • [ ] Greek
    • [ ] Hungarian
    • [ ] Irish
    • [x] Italian
    • [ ] Latvian
    • [ ] Lithuanian
    • [ ] Maltese
    • [x] Polish
    • [x] Portuguese
    • [ ] Romanian
    • [x] Slovak
    • [ ] Slovenian
    • [x] Spanish
    • [x] Swedish

License

Apache2

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].