Google Play Pass

Officially announced: https://developer.android.com/google-play/guides/play-pass

Will Corona support this?  Seems like it shouldn’t be too hard, just some licensing tweaks.  Could be a big future market on Google.

I’m not sure what we would have to change to support this. 

Rob

They haven’t released the documentation because it’s invitation only and an NDA may still apply.  But see one of my earlier threads on a related matter: https://forums.coronalabs.com/topic/75213-google-play-licensing-lvl/

I am interested in this topic too. Can Corona team check the Google Pass implementation guide and see if the Corona Licensing Library supports all required features? Google Play Pass support will be on high demand from many developers soon. 

Rob, do you have any more insight on this?  Something you can talk to engineering about?

I asked Engineering and I’m waiting on an answer.

Rob

This is invitation-only, and nothing that Corona needs to do

EDIT: That was a bit brief. But for an IAP app the current API works ok. Don’t know about paid apps, I have the docs but as mentioned it is under NDA.

Hey Per, yes it’s invitation-only for now (and yes we were invited) but will be opened up soon to more folks.  As for Corona SDK, it doesn’t support the most recently Licensing (LVL) libraries as they are missing a function followLastLicensingUrl  that’s required by Play Pass.

Are you currently on the service?  Curious if you went with IAP and paid versions.  I believe it’s possible to do IAP using existing Corona features, but paid versions can’t be done yet until this is updated.

I have 3 titles due to roll out in the next catalog refresh. They were delayed in testing (for a stupidly long time) because of a misunderstanding - to detect a lapsed subscription for an IAP app you need to wait for the restore purchase to time out, but they were testing too briefly to detect that (10 second time out in my case). I have IAP versions only.

So to detect if they no longer have access you call store.restore and if it never returns anything then you assume they’re lapsed?

What if they have no internet connection, are on a plane, etc?  Store.restore would not return anything as well, and then you’d revoke their access?

Google Play Services on your phone keeps a cache of purchase states, and that is the middleman component that handles all your IAP calls. I don’t know the details, but I assume that in the offline scenarios you describe it would return the last known state, i.e. return purchased rather than timeout

Interesting!  My fear with this is angering my existing consumers who bought via a normal IAP and want to use the app offline and suddenly get locked out.  I’ll check with Google about this I think, but thanks for the feedback!

We do still need updated LVL to get our premium apps working though.

It might be worth looking at the open source repository and seeing how difficult it would be to add and then issuing a pull request to add the extra LVL support.

Rob

Sorry Rob, that’s beyond me.  Not familiar with any of that.

Why does the current API work for IAP apps but not for paid apps?  

For IAP,everything Google requires is already available in Corona’s Google IAP plugin.  You just have to listen for “purchased” states, and then also create a function to check for the purchase being revoked (what Per discussed above).

For paid/premium apps they require you to check with their licensing service.  Corona has this available via the licensing plug-in, but it seems to be an old version of the licensing (LVL) library and is missing some required functions.

Thanks for the clarification. Do you know exactly what functions are missing? If you do, why don’t you post them here so that Rob passes the request to the engineering team? 

I have above in the thread.  followLastLicensingUrl   is missing and is required by Google.

Has anyone figured out how to use the Google Licensing feature in Corona to work with paid apps in the Google Play Pass? I have also been invited to join with my apps but the app I am looking to add is a paid app. I am needing to read the URL “extra” returned with the NOT_LICENSED response in the LVL.

The corona licensing library licensing.verify() function has an event.response parameter, but will this return just the NOT_LICENSED response or will it also return the URL “extra” provided with the response? Or is this the followLastLicensingUrl method that kbradford is referring to?

Thank you.

Any word on this yet?