Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PiracyChecker fails to check whether the app is installed from Google Play Store. #78

Open
adamvarhegyi opened this issue Nov 22, 2019 · 8 comments

Comments

@adamvarhegyi
Copy link

adamvarhegyi commented Nov 22, 2019

Hi,

I'm using 'com.github.javiersantos:PiracyChecker:1.2.3' because my app is not yet integrates AndroidX.

I have numerous reports from user reviews in my app's Google Play page that they have installed the app from the Google Play Store, yet they getting the piracy warning message.

Here are some examples:

whatisgoingon

I also got a user report via email:

mail

I use the piracy checker like this:

    public static void showPiracyActivityIfNeeded(final Activity activity) {
        if (!BuildConfig.DEBUG) {
            //Releaseb build, piracy check.
            new PiracyChecker(activity)
                    .enableInstallerId(InstallerID.GOOGLE_PLAY)
                    .callback(new PiracyCheckerCallback() {
                        @Override
                        public void allow() {
                        }

                        @Override
                        public void dontAllow(@NonNull PiracyCheckerError piracyCheckerError, @Nullable PirateApp pirateApp) {
                            Intent intent = new Intent(activity, PiracyWarningActivity.class);
                            activity.startActivity(intent);
                            activity.finish();
                        }
                    })
                    .start();
        }
    }

My app have 4k reviews and only 3 of them are like this, but I don't know the exact user count because there could be users who don't comment about this issue.

What is going on?

Thanks in advance.

@avipars
Copy link
Contributor

avipars commented Dec 14, 2019

Is it possible that these downloads aren't legitimate?

@adamvarhegyi
Copy link
Author

Is it possible that these downloads aren't legitimate?

I don't think so. They wouldn't complain that way.

@goldfish07
Copy link

goldfish07 commented Dec 19, 2019

Note: piracy check require internet connection for once to save isregestered value in SharedPreference;

your user getting this issue cause

  • they may clear data of app and then reopen it without internet connection which show not licensed message

possibilities can be many ,what if OS denied app not to use internet connection

solution
you can ask user to enable internet connection to check license

if OS Network related issue
put network security config in manifest

<application android:networkSecurityConfig="@xml/network_security_config">

then in res->xml create network_security_config.xml

and put

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>

@adamvarhegyi
Copy link
Author

adamvarhegyi commented Dec 19, 2019

put network security config in manifest

<application android:networkSecurityConfig="@xml/network_security_config">

then in res->xml create network_security_config.xml

and put

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>

Okay... but why? What is this needed? What is this doing?

Ah okay I see you edited your answer. I'll try this.

@goldfish07
Copy link

have you seen my edited answers ?

@tzmm
Copy link

tzmm commented Apr 16, 2020

Leaving this for posterity in case it helps anyone:

When we detect that the app wasn't installed from the Play Store, we pop-up a dialog that gives the user two options:

  1. Redirect them to the Play Store to reinstall from there.
  2. Contact support

When they contact support we open an email dialog and fill in some details to help understand what's going on, including the installing package name.

Generally these are people who are confused, and think they're installing from the right place, but inevitably, they'll have installing packages including:

ru..
com.apkpure.aegon
com.lenovo.anyshare.gps
cn.xender
etc...

Not saying we're not getting false positives, but we're definitely seeing a good number of support calls from people who think they've done the right thing.

I suspect the ru.. ones could be an official Play Store app replacement in Russia, but we're getting tons of installs from Russia so it's not clear to me if this is an official channel or not.

@adamvarhegyi
Copy link
Author

adamvarhegyi commented Dec 13, 2020

After adding the network security config to the manifest, I thought this case was solved. I didn't met it for a long time until today.
This lib still fires false positives and I'm thinking about completely removing it. This was it does more harm than good.

By the way, one question:

When they contact support we open an email dialog and fill in some details to help understand what's going on, including the installing package name.

How do you get the installer id? If I can get the installer id I could just check whether it is the same as the Google Play store and that's it? I have my own piracy checker?

Thanks in advance.

@tzmm

@grill2010
Copy link

Same problem on my side.
I have two apps on the store which are using piracy checker and sometimes users are complaining that they receive this message even though the have installed it from the store (I checked their order id and they were legit downloads). I really don't know why this is happening but it seems it's hard to reproducer and it's probably a hidden error which is in the project for a long time already.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants