Coder Social home page Coder Social logo

onepf / openiab Goto Github PK

View Code? Open in Web Editor NEW
473.0 473.0 173.0 263.22 MB

Open In-App Billing for Google Play, SlideMe, Amazon Store, Nokia Store, Samsung Apps, Yandex.Store, Appland, Aptoide, AppMall and Fortumo.

Home Page: http://onepf.org/openiab/

License: Apache License 2.0

Java 100.00%

openiab's Introduction

Please consider trying out OPFIab as it's intended to replace OpenIAB. Library is still in development, but your feedback might be extremely usefull.

Android Arsenal

OpenIAB is an open source library which provides an easy way for the developers to develop their apps/games in a way that one APK will work in all the stores and automatically use the right in-app purchase API under each store. OpenIAB also provides an open in-app billing API that stores could implement to support all the built APK files using this library. Currently there are already 5 stores that support the Open API: Yandex.Store, SlideME, Appland, Aptoide and AppMall. The open stores don't need extra libraries to be included with your project, only the OpenIAB core is required to support all of them.

OpenIAB supports the following stores:

  • Open Stores (stores working via Open Protocol)
    • Appland
    • Aptoide
    • AppMall
    • SlideMe
    • Yandex.Store
  • Wrapped Stores (stores that don't work via Open Protocol but wrapped with the same interface)
  • Google Play
  • Samsung Apps
  • Nokia Store
  • Amazon AppStore

For detailed instructions, please visit our wiki. Contact [email protected] if you have any business comments or questions about the library.

##Rules for bug reports

  1. Do not write directly to the team members.
  2. Check FAQ for your question/issue.
  3. Choose a correct queue of issues
  1. Give details. As many as possible but DO NOT SHARE YOUR PUBLIC KEY for in-app verification.
    The following details could be really helpful:
  • OS. Could be Android, iOS, WP
  • Package. Could be native OpenIAB jar, Unity plugin, Cordove plugin or Marmalade plugin.
  • Version of the library, e.g. 0.9.8.6
  • Affected stores
  • Logs
  • Screenshots

License

Copyright 2012-2015 One Platform Foundation

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

openiab's People

Contributors

abautu avatar akarimova avatar antongitname avatar bminaiev avatar brstgt avatar grimreio avatar igor-eremeev avatar kapji avatar kirich1409 avatar kwadkore avatar madangosain avatar oorlov avatar parkerkane avatar pawelkw avatar printercu avatar romanzhilich avatar ruimateus avatar rusmonster avatar schemon avatar sergeich avatar sisbell avatar sschuberth avatar uberspot avatar vassiliphilippov avatar yvasileuski avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openiab's Issues

Dynamic appstore classes loading

We want to support possibility to compile OpenIAB library with only some selected appstore support.

The developers will use their build system to remove files of the not needed appstores. Our code should suport it.

So instead of creating all the appstores like:

appstores.add(new GooglePlay(context, extra.get("GooglePublicKey")));
appstores.add(new AmazonAppstore(context));
appstores.add(new SamsungApps(context, extra.get("SamsungGroupId")));
appstores.add(new TStore(context, extra.get("TStoreAppId")));

we need to create them in runtime using reflection checking if such class is available.

Make OpenIAB API draft

Create OpenIAB API as close to Google IAB API 3.0 as possible.
The difference would be in additional methods needed to detect if the store installed this app or not. Probably we need to move them to separate OMS API because they are not related to IAB functionality but in general to an appstore.

Life 2 crashes after reopen app

run LIfe 2
close
run again => crash

04-26 19:13:33.075 E/AndroidRuntime(20205): FATAL EXCEPTION: main
04-26 19:13:33.075 E/AndroidRuntime(20205): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.onepf.life2/org.onepf.life2.GameActivity}: java.lang.IllegalStateException: IAB helper is already set up.
04-26 19:13:33.075 E/AndroidRuntime(20205): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100)
04-26 19:13:33.075 E/AndroidRuntime(20205): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
04-26 19:13:33.075 E/AndroidRuntime(20205): at android.app.ActivityThread.access$600(ActivityThread.java:140)
04-26 19:13:33.075 E/AndroidRuntime(20205): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
04-26 19:13:33.075 E/AndroidRuntime(20205): at android.os.Handler.dispatchMessage(Handler.java:99)
04-26 19:13:33.075 E/AndroidRuntime(20205): at android.os.Looper.loop(Looper.java:137)
04-26 19:13:33.075 E/AndroidRuntime(20205): at android.app.ActivityThread.main(ActivityThread.java:4898)
04-26 19:13:33.075 E/AndroidRuntime(20205): at java.lang.reflect.Method.invokeNative(Native Method)
04-26 19:13:33.075 E/AndroidRuntime(20205): at java.lang.reflect.Method.invoke(Method.java:511)
04-26 19:13:33.075 E/AndroidRuntime(20205): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
04-26 19:13:33.075 E/AndroidRuntime(20205): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
04-26 19:13:33.075 E/AndroidRuntime(20205): at dalvik.system.NativeStart.main(Native Method)
04-26 19:13:33.075 E/AndroidRuntime(20205): Caused by: java.lang.IllegalStateException: IAB helper is already set up.
04-26 19:13:33.075 E/AndroidRuntime(20205): at org.onepf.life2.oms.appstore.googleUtils.IabHelper.startSetup(IabHelper.java:197)
04-26 19:13:33.075 E/AndroidRuntime(20205): at org.onepf.life2.oms.appstore.GooglePlayBillingService.startSetup(GooglePlayBillingService.java:31)
04-26 19:13:33.075 E/AndroidRuntime(20205): at org.onepf.life2.oms.OpenIabHelper.startSetup(OpenIabHelper.java:72)
04-26 19:13:33.075 E/AndroidRuntime(20205): at org.onepf.life2.google.GooglePlayHelper.(GooglePlayHelper.java:34)
04-26 19:13:33.075 E/AndroidRuntime(20205): at org.onepf.life2.BillingHelper.(BillingHelper.java:37)
04-26 19:13:33.075 E/AndroidRuntime(20205): at org.onepf.life2.GameActivity.onCreate(GameActivity.java:82)
04-26 19:13:33.075 E/AndroidRuntime(20205): at android.app.Activity.performCreate(Activity.java:5206)
04-26 19:13:33.075 E/AndroidRuntime(20205): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
04-26 19:13:33.075 E/AndroidRuntime(20205): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064)
04-26 19:13:33.075 E/AndroidRuntime(20205): ... 11 more

[unity-plugin] always "purchaseFailedEvent" after testing android.test.purchased

I am using the provided test scene in the 0.3 unitypackage.

When I press Init and do anything but "Test purchase" for example "purchase real product" I will get the google play overlay to buy or to tell me that the SKU does not exist. Up to this point everything works as expected.

But once I press "Test purchase" I see the "already owned" log line in logcat (so far so good) but after that I cannot do all of the other operations anymore. They will all log:

purchaseFailedEvent: Cannot start product purchase. Another operation is in progress.

The only thing I can do to then is "unbindService" and "init" again....

Amazon subsciption sub-skus

Amazon has sub-skus for subscriptions. For example org.onepf.orange_cels.monthly or org.onepf.orange_cels.weekly. This help sell same subscription for different duration. Need OpenSku to support this.

Exception on Application.Quit();

Hey all,

I've been trying to track down an exception in my app so I've reproduced it in the unity plug in example code. I added a button to call Application.Quit() and get this logcat...

D/dalvikvm( 1283): GC_CONCURRENT freed 646K, 24% free 9815K/12796K, paused 2ms+3ms, total 37ms
D/OpenIAB-unity-plugin( 6246): destroyBroadcasts
D/OpenIAB-unity-plugin( 6246): destroyBroadcasts exception:
D/OpenIAB-unity-plugin( 6246): Receiver not registered: com.openiab.OpenIAB$7@42083238
D/AndroidRuntime( 6246): Shutting down VM
W/dalvikvm( 6246): threadid=1: thread exiting with uncaught exception (group=0x418c1b90)
E/AndroidRuntime( 6246): FATAL EXCEPTION: main
E/AndroidRuntime( 6246): Process: org.onepf.angrybots, PID: 6246
E/AndroidRuntime( 6246): java.lang.Error: FATAL EXCEPTION [main]
E/AndroidRuntime( 6246): Unity version : 4.3.0f4
E/AndroidRuntime( 6246): Device model : asus Nexus 7
E/AndroidRuntime( 6246): Device fingerprint: google/nakasi/grouper:4.4/KRTXXS/XXXXXX:user/release-keys
E/AndroidRuntime( 6246):
E/AndroidRuntime( 6246): Caused by: android.util.SuperNotCalledException: Activity {org.onepf.angrybots/com.openiab.BillingActivity} did not call through to super.onDestroy()
E/AndroidRuntime( 6246): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3467)
E/AndroidRuntime( 6246): at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3496)
E/AndroidRuntime( 6246): at android.app.ActivityThread.access$1300(ActivityThread.java:135)
E/AndroidRuntime( 6246): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1450)
E/AndroidRuntime( 6246): at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime( 6246): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime( 6246): at android.app.ActivityThread.main(ActivityThread.java:4998)
E/AndroidRuntime( 6246): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 6246): at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime( 6246): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
E/AndroidRuntime( 6246): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
E/AndroidRuntime( 6246): at dalvik.system.NativeStart.main(Native Method)

I/Process ( 6246): Sending signal. PID: 6246 SIG: 9
W/InputMethodManagerService( 501): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@42659e38 attribute=null, token = android.os.BinderProxy@424f8f88
I/ActivityManager( 501): Process org.onepf.angrybots (pid 6246) has died.
I/WindowState( 501): WIN DEATH: Window{426f9f28 u0 org.onepf.angrybots/com.openiab.BillingActivity}
W/WindowManager( 501): Force-removing child win Window{4289bfa0 u0 SurfaceView} from container Window{426f9f28 u0 org.onepf.angrybots/com.openiab.BillingActivity}
W/WindowManager( 501): Failed looking up window
W/WindowManager( 501): java.lang.IllegalArgumentException: Requested window android.os.BinderProxy@421ff188 does not exist
W/WindowManager( 501): at com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:7897)
W/WindowManager( 501): at com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:7888)
W/WindowManager( 501): at com.android.server.wm.WindowState$DeathRecipient.binderDied(WindowState.java:1040)
W/WindowManager( 501): at android.os.BinderProxy.sendDeathNotice(Binder.java:493)
W/WindowManager( 501): at dalvik.system.NativeStart.run(Native Method)
I/WindowState( 501): WIN DEATH: null

I have no idea how to recompile the java, if anyone wants to give me a masterclass in it I can try to fix this myself. Any help would be appreciated.

Many thanks.

OpenStore reference implementation

Need to have one for following:

  • provide real store functionality locally. Better to check app supports OpenStores well before publishing
  • provide auto-test suite for apps

Finish Samsung Apps support

Finish Samsung Apps support:

  • check that it works
  • match error types
  • implement isAppAvailable
  • implement isInstaller

[unity-plugin] android.app.SuperNotCalledException

Hi,
Using with Unity3d.
When I quit an app on android device the Exception is thrown. On another android device the same issue no matter what I do.

My OS: Win 7 x64 pro, Unity 3d 4.2.1f4, Android SDK tools v.21

Logcat:

E/AndroidRuntime( 9562): FATAL EXCEPTION: main
E/AndroidRuntime( 9562): java.lang.Error: FATAL EXCEPTION [main]
E/AndroidRuntime( 9562): Unity version : 4.2.1f4
E/AndroidRuntime( 9562): Device model : rockchip PMP7100D3G
E/AndroidRuntime( 9562): Device fingerprint: Prestigio/PMP7100D3G/PMP7100D3G:4.1
.1/JRO03H/20130312.223120:user/release-keys
E/AndroidRuntime( 9562):
E/AndroidRuntime( 9562): Caused by: android.app.SuperNotCalledException: Activit
y {com.alienforcegames.OPENIAB_TEST2/com.openiab.BillingActivity} did not call t
hrough to super.onDestroy()

Does anybody got a clue?

Unity queryInventory with SKUs

Hi,
It looks like the java method "public void queryInventory(String[] skus)" doesn't actually do anything with the skus.

Certainly every call I make to "OpenIAB.queryInventory(String[] skus)" doesn't fill in any SKU data.

Can you confirm this? Or have I read this wrong or done something wrong?

Many thanks.

OpeIABHelper Options

To put configuration items there and simplify OpenIABHelper constructor

  • preffered stores
  • available stores
  • validate signature
    ...

IAP testing

I didn't find any opportunity to test IAPs. For now I'm more intrested in yandex.store.

Can you help me?

(IAP = In-App Purchases)

Save appstore who was used for IAB and always use it later

There are complex scenarios when application was installed from one store but updated from another appstore. Which appstore to use for IAB in that case?

What we need to do is to make sure that once one appstore was used for IAB it will be continue used for other IAB. So the OpenIAB library should safe appstore ID in local storage after first usage and always use this appstore later.

Open IAB not working google play

Hi,

I'm probably doing something wrong but I have no clue what. The OpenIAB is working perfectly on my iOS build, but on my Android build is not working at all.
I'm only connecting to Google Play on android for in apps but I get no response from the server. I never get the billing supported or billing not supported from google for example.

I'm initialising everything from start and nothing happens. What am I doing wrong?

Here is the code:

void Start() {
    var options = new OnePF.Options();
    options.storeKeys.Add(OnePF.OpenIAB_Android.STORE_GOOGLE, GOOGLE_PLAY_KEY);
    OnePF.OpenIAB.init(options);

if UNITY_iPHONE

    OnePF.OpenIAB.mapSku("coins1", OnePF.OpenIAB_iOS.STORE, "coins1");
    OnePF.OpenIAB.mapSku("coins2", OnePF.OpenIAB_iOS.STORE, "coins2");
    OnePF.OpenIAB.mapSku("coins3", OnePF.OpenIAB_iOS.STORE, "coins3");
    OnePF.OpenIAB.mapSku("coins4", OnePF.OpenIAB_iOS.STORE, "coins4");
    OnePF.OpenIAB.mapSku("coins5", OnePF.OpenIAB_iOS.STORE, "coins5");
    OnePF.OpenIAB.mapSku("coins6", OnePF.OpenIAB_iOS.STORE, "coins6");
    OnePF.OpenIAB.mapSku("life1", OnePF.OpenIAB_iOS.STORE, "life1");
    OnePF.OpenIAB.mapSku("life2", OnePF.OpenIAB_iOS.STORE, "life2");
    OnePF.OpenIAB.mapSku("life3", OnePF.OpenIAB_iOS.STORE, "life3");

elif UNITY_ANDROID

    OnePF.OpenIAB.mapSku("coins1", OnePF.OpenIAB_Android.STORE_GOOGLE, "smash.coins1");
    OnePF.OpenIAB.mapSku("coins2", OnePF.OpenIAB_Android.STORE_GOOGLE, "smash.coins2");
    OnePF.OpenIAB.mapSku("coins3", OnePF.OpenIAB_Android.STORE_GOOGLE, "smash.coins3");
    OnePF.OpenIAB.mapSku("coins4", OnePF.OpenIAB_Android.STORE_GOOGLE, "smash.coins4");
    OnePF.OpenIAB.mapSku("coins5", OnePF.OpenIAB_Android.STORE_GOOGLE, "smash.coins5");
    OnePF.OpenIAB.mapSku("coins6", OnePF.OpenIAB_Android.STORE_GOOGLE, "smash.coins6");
    OnePF.OpenIAB.mapSku("life1", OnePF.OpenIAB_Android.STORE_GOOGLE, "smash.life1");
    OnePF.OpenIAB.mapSku("life2", OnePF.OpenIAB_Android.STORE_GOOGLE, "smash.life2");
    OnePF.OpenIAB.mapSku("life3", OnePF.OpenIAB_Android.STORE_GOOGLE, "smash.life3");

endif

}


private void BillingSupported() { _billingSupported = true; OnePF.OpenIAB.queryInventory(); }
private void BillingNotSupported(string error) { _billingSupported = false; Debug.Log("Billing is not Supported: " + error); }
private void PurchaseSucceded(OnePF.Purchase purchase) { SuccededBuyItem(purchase); }
private void PurchaseFailed(string error) { FailedBuyItem(error); Debug.Log("Purchase Failed: " + error); }
private void ConsumePurchaseSucceeded(OnePF.Purchase purchase) { SuccededBuyItem(purchase); }
private void ConsumePurchaseFailed(string error) { FailedBuyItem(error); Debug.Log("ConsumePurchase Failed: " + error); }
private void TransactionRestored(string sku) {}
private void RestoreSucceeded() {}
private void RestoreFailed(string error) { FailedBuyItem(error); Debug.Log("Restore Failed: " + error); }
private void QueryInventoryFailed(string error) { FailedBuyItem(error); Debug.Log("QueryInventory Failed: " + error); }
private void QueryInventorySucceeded(OnePF.Inventory inventory) { UpdateStore(inventory);
}

Only Google Play Store working

I didn't read the complete commit history but I think, you f****ed the AppStore election in commit add4795

Is there something like a stable state? Doesn't seem to me like that at the moment.
I could help you in development but I should have a kind of briefing of the state of the project.

Port Google IAB sample to OpenIAB Lib

Take TrivialDrive sample and port it from Google IAB API 3.0 to OpenIAB Lib.

Document all the changes in all the files (what is needed to add/edit/delete in each file)

App with OpenIAB crashes if Google Play or OpenStore process is killed

  • Open TrivialDrive
  • Buy something in Google Play / OpenStore
  • Kill Google Play / OpenStore process
  • Try to buy something else
    ACT: TrivialDrive crashes
    EXP: Should reconnect to service and perform purchase

Log:

09-29 01:30:30.619: E/AndroidRuntime(27929): FATAL EXCEPTION: main
09-29 01:30:30.619: E/AndroidRuntime(27929): java.lang.IllegalStateException: Could not execute method of the activity
09-29 01:30:30.619: E/AndroidRuntime(27929):    at android.view.View$1.onClick(View.java:3699)
09-29 01:30:30.619: E/AndroidRuntime(27929):    at android.view.View.performClick(View.java:4223)
09-29 01:30:30.619: E/AndroidRuntime(27929):    at android.view.View$PerformClick.run(View.java:17275)
09-29 01:30:30.619: E/AndroidRuntime(27929):    at android.os.Handler.handleCallback(Handler.java:615)
09-29 01:30:30.619: E/AndroidRuntime(27929):    at android.os.Handler.dispatchMessage(Handler.java:92)
09-29 01:30:30.619: E/AndroidRuntime(27929):    at android.os.Looper.loop(Looper.java:137)
09-29 01:30:30.619: E/AndroidRuntime(27929):    at android.app.ActivityThread.main(ActivityThread.java:4898)
09-29 01:30:30.619: E/AndroidRuntime(27929):    at java.lang.reflect.Method.invokeNative(Native Method)
09-29 01:30:30.619: E/AndroidRuntime(27929):    at java.lang.reflect.Method.invoke(Method.java:511)
09-29 01:30:30.619: E/AndroidRuntime(27929):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
09-29 01:30:30.619: E/AndroidRuntime(27929):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
09-29 01:30:30.619: E/AndroidRuntime(27929):    at dalvik.system.NativeStart.main(Native Method)
09-29 01:30:30.619: E/AndroidRuntime(27929): Caused by: java.lang.reflect.InvocationTargetException
09-29 01:30:30.619: E/AndroidRuntime(27929):    at java.lang.reflect.Method.invokeNative(Native Method)
09-29 01:30:30.619: E/AndroidRuntime(27929):    at java.lang.reflect.Method.invoke(Method.java:511)
09-29 01:30:30.619: E/AndroidRuntime(27929):    at android.view.View$1.onClick(View.java:3694)
09-29 01:30:30.619: E/AndroidRuntime(27929):    ... 11 more
09-29 01:30:30.619: E/AndroidRuntime(27929): Caused by: java.lang.NullPointerException
09-29 01:30:30.619: E/AndroidRuntime(27929):    at org.onepf.oms.appstore.googleUtils.IabHelper.launchPurchaseFlow(IabHelper.java:397)
09-29 01:30:30.619: E/AndroidRuntime(27929):    at org.onepf.oms.OpenIabHelper.launchPurchaseFlow(OpenIabHelper.java:249)
09-29 01:30:30.619: E/AndroidRuntime(27929):    at org.onepf.oms.OpenIabHelper.launchPurchaseFlow(OpenIabHelper.java:232)
09-29 01:30:30.619: E/AndroidRuntime(27929):    at org.onepf.trivialdrive.MainActivity.onBuyGasButtonClicked(MainActivity.java:271)
09-29 01:30:30.619: E/AndroidRuntime(27929):    ... 14 more

Crash on some devices

I just checkout your code and try to launch the sample (life game).
I had a crash with it while installing it through adb.
That was because my packageManager.getInstallerPackageName was called with a wrong package name inside the class “GooglePlay.java” in your library.
I looked into the code and found:

String packageName = mContext.getApplicationContext().getClass().getPackage().getName(); // This does not return the package name of the app in my case (with a nexus 7)
String installerPackageName = packageManager.getInstallerPackageName(packageName);

I think there is an error, stop me if I’m wrong:
String packageName = mContext.getApplicationContext().getPackageName();
Should be better.

getClass().getPackage().getName(); does not always return the package name of the app, it depend on many things, one of them is the constructor of your phone … (Welcome in Android world).

Incorrect build scripts

  1. Master contain incorrect build.gradle to build library. Please, fix it to work.
  2. It seems, that "ant build_jar" outputs library only with openiab itself. It misses libs for samsung, t-store, amazon, etc.

Finish SK T-Store support

Finish SK T-Store support:

  • implement isAppAvailable
  • implement isInstaller
  • implement consume
  • implement query inventory
  • support different error types

Support of Unity 4.0.x

For some reason we are using Unity 4.0.x.
Please make support for it or point me how to do it with your source code (I will try make a fork).

using unity3d package breaks "Application.systemLanguage"

I have no idea how this is possible but once i include the openIAB package unity always returns "unknown" when I request Application.systemLanguage i guess they call a jni method to get this info and that this is blocked since you change the activity of the app when including the billing proxy ?

Cleanup master

There are useless code in master branch. Please, review and cleanup.

Add NOOK (Fortumo) IAB support to OpenIAB Lib

NOOK apps is using Fortumo SDK.
We need to add NOOK support.
Also in Fortumo support is added anyway we can think about using Fortumo for the cases when no appstore supports IAB.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.