Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.InAppBilling-”的;可用资源清册错误:System.NullReferenceException“;_Xamarin_In App Purchase_Xamarin.android_In App Billing - Fatal编程技术网

Xamarin.InAppBilling-”的;可用资源清册错误:System.NullReferenceException“;

Xamarin.InAppBilling-”的;可用资源清册错误:System.NullReferenceException“;,xamarin,in-app-purchase,xamarin.android,in-app-billing,Xamarin,In App Purchase,Xamarin.android,In App Billing,注意:我主要是在这里发布这个问题,这样它就被谷歌索引了,省去了一些可怜的家伙在这个混乱中深挖的麻烦,却发现这不是他们自己的错。对于这个问题,一个可以接受的答案是我可以使用的变通方法,或者Xamarin/SimpleJson的某个人确认这是一个bug,它会被修复 我已经成功地使用Xamarin.InAppBilling一年多了(在真正的Google Play商店上的购买效果很好)。我们最近开始重新测试此功能(由于重构),并且在查询我们的产品库存时(甚至在使用静态响应测试produkt SKU时)出

注意:我主要是在这里发布这个问题,这样它就被谷歌索引了,省去了一些可怜的家伙在这个混乱中深挖的麻烦,却发现这不是他们自己的错。对于这个问题,一个可以接受的答案是我可以使用的变通方法,或者Xamarin/SimpleJson的某个人确认这是一个bug,它会被修复

我已经成功地使用Xamarin.InAppBilling一年多了(在真正的Google Play商店上的购买效果很好)。我们最近开始重新测试此功能(由于重构),并且在查询我们的产品库存时(甚至在使用静态响应测试produkt SKU时)出现此异常:

Json:

所以我想SimpleJson/PocoJson不管它们有什么序列化程序都有问题。在我看来,这就像是图书馆里的一个bug,而不是我这边的一个错误(通过他们的清单和所有看起来像上帝的东西)

我会使用JSON.NET,问题是他们的
产品
类显然没有默认构造函数(什么?!,我已经与IL合作好几年了,从来没有见过这样的东西),但有一个
编译器生成的属性
。但我的产品需要是该类的实例,这样我就可以将它们传递回它们的API…

并且再次点击。
PocoJsonSerializerStrategy
使用了大量的反射,因此这是我在浏览了一长串的

将此添加到您的
.csproj
,您就可以开始了

<AndroidLinkSkip>Xamarin.InAppBilling</AndroidLinkSkip>
其中,应用内计费可能会破坏您应该首先检查的功能(特别是,我们将大部分IAP逻辑从一个活动移动到了一个片段,因此也必须对其进行测试)

旁注:我徒劳地等待了3x2h,等待Google Play Alpha频道更新我的测试设备上的测试版本。对我来说,我可以使用从Xamarin Studio部署的构建成功地测试和运行IAPs(甚至调试构建)。这并不意味着这对你也有用

var service = _serviceConnection.Service;
Task.Factory.StartNew<IList<Product>>( () => {
    IList<Product> result;
    try
    {
        Bundle bundle = new Bundle();
        bundle.PutStringArrayList( "ITEM_ID_LIST", skus );
        Bundle skuDetails = service.GetSkuDetails( 3, this.Activity.PackageName, ItemType.Product, bundle );
        int responseCode = skuDetails.GetInt( "RESPONSE_CODE" );
        if (responseCode != 0)
        {
            ViewModel.ShowTransactionError( "Error querying inventory: " + TranslateResponseCode( responseCode ) );
            result = null;
        }
        else
        {
            IList<string> stringArrayList = skuDetails.GetStringArrayList( "DETAILS_LIST" );
            result = null;
            if (stringArrayList != null)
            {
                Console.WriteLine("DETAILS_LIST: " + string.Join("\n - ", stringArrayList));
                result = stringArrayList.Select(x => JsonConvert.DeserializeObject<Product>(x)).ToList();
            }                        
        }
    } catch (Exception ex)
    {
        ViewModel.ShowTransactionError( "Error querying inventory: " + ex.ToString() );
        result = null;
    }
    return result;
} )
DETAILS_LIST: {"title":"Sample Title","price":"0,93 €","type":"inapp","description":"Sample description for product: android.test.canceled.","price_amount_micros":933038,"price_currency_code":"EUR","productId":"android.test.canceled"}
 - {"title":"Sample Title","price":"0,93 €","type":"inapp","description":"Sample description for product: android.test.item_unavailable.","price_amount_micros":933038,"price_currency_code":"EUR","productId":"android.test.item_unavailable"}
 - {"title":"Sample Title","price":"0,93 €","type":"inapp","description":"Sample description for product: android.test.purchased.","price_amount_micros":933038,"price_currency_code":"EUR","productId":"android.test.purchased"}
 - {"title":"Sample Title","price":"0,93 €","type":"inapp","description":"Sample description for product: android.test.refunded.","price_amount_micros":933038,"price_currency_code":"EUR","productId":"android.test.refunded"}
 - {"title":"Boat Upgrade (Rowing in Motion - Solo)","price":"69,90 €","type":"inapp","description":"Analyze and Record an unlimited number of strokes per rowing session.","price_amount_micros":69900000,"price_currency_code":"EUR","productId":"com.rowinginmotion.mobile.boatapp.droid.solo.boat"}
 - {"title":"Coach Upgrade (Rowing in Motion - Solo)","price":"98,77 €","type":"inapp","description":"Receive unlimited live data from a boat using a mobile WiFi.","price_amount_micros":98770000,"price_currency_code":"EUR","productId":"com.rowinginmotion.mobile.boatapp.droid.solo.coach"}
<AndroidLinkSkip>Xamarin.InAppBilling</AndroidLinkSkip>