2014-03-02 1 views
2

현재 내가 만든 Unity 기반 Android 게임에 대한 인앱 결제를 설정하고 있으며이를 수행하기 위해 OpenIAB 플러그인을 사용하고 있습니다. 현재 Google Play 스토어에서만 테스트 중입니다.테스트 중에 Android IAP에서 항목을 찾을 수 없음

이미 개발자 콘솔을 통해 인앱 제품을 게시했습니다. 저는 베타 버전으로 게시 된 APK와 협력하고 있습니다. 기본 전자 메일이 할당 된 테스터 중 하나 인 장치에서 게임을 테스트하고 있으며 중요한 경우에 대비해 테스트 응답을 LICENSE로 설정했습니다.

OpenIAB을 사용할 때는 기본적으로 OpenIAB.purchaseProduct(string) 함수를 호출하고 "SKU"를 전달해야합니다. 내가 통과해야 문자열 어떤 형태로 완전히 잘 모르겠지만, 지금까지 나는이 조합을 시도하고있다 :

  • "SKU_NAME"
  • "com.CompanyName.ProductName.sku_name"
  • 을 " com.companyname.productname.sku_name "

이러한 SKU 식별자는 모두"구입하려고 시도한 항목을 찾을 수 없습니다 "라는 오류 메시지가 나타납니다. 나는 "sku_name"의 철자를 정확하게 알고있다. 정말 developerPayload이 있어야하는데 모르는

private static AndroidJavaObject _plugin; 

     static OpenIAB_Android() { 
      if (Application.platform != RuntimePlatform.Android) { 
       STORE_GOOGLE = "STORE_GOOGLE"; 
       STORE_AMAZON = "STORE_AMAZON"; 
       STORE_TSTORE = "STORE_TSTORE"; 
       STORE_SAMSUNG = "STORE_SAMSUNG"; 
       STORE_YANDEX = "STORE_YANDEX"; 
       return; 
      } 

      AndroidJNI.AttachCurrentThread(); 

      // Find the plugin instance 
      using (var pluginClass = new AndroidJavaClass("org.onepf.openiab.UnityPlugin")) { 
       _plugin = pluginClass.CallStatic<AndroidJavaObject>("instance"); 
       STORE_GOOGLE = pluginClass.GetStatic<string>("STORE_GOOGLE"); 
       STORE_AMAZON = pluginClass.GetStatic<string>("STORE_AMAZON"); 
       STORE_TSTORE = pluginClass.GetStatic<string>("STORE_TSTORE"); 
       STORE_SAMSUNG = pluginClass.GetStatic<string>("STORE_SAMSUNG"); 
       STORE_YANDEX = pluginClass.GetStatic<string>("STORE_YANDEX"); 
      } 
     } 

     private bool IsDevice() { 
      if (Application.platform != RuntimePlatform.Android) { 
       //OpenIAB.EventManager.SendMessage("OnBillingNotSupported", "editor mode"); 
       return false; 
      } 
      return true; 
     } 

public void purchaseProduct(string sku, string developerPayload="") { 
      if (!IsDevice()) { 
       // Fake purchase in editor mode 
       OpenIAB.EventManager.SendMessage("OnPurchaseSucceeded", Purchase.CreateFromSku(sku, developerPayload).Serialize()); 
       return; 
      } 
      _plugin.Call("purchaseProduct", sku, developerPayload); 
     } 

: purchaseProduct()의 구현과 필요한 변수 _plugin는 다음과 같이 (이의 OpenIAB 플러그인 소스 코드에서하지 나)입니다. 나는 OpenIAB.purchaseProduct()으로 전화하는 것 이외의 특별한 일을하지 않고있다. 아마도 나는 잊고있다.

실제로 적절한 제품을 요청하는 방법에 대한 지침이나 아이디어는 누구든지 제공 할 수 있습니까?

+0

스토어 통합을 만드는 새로운 방법이 새로 추가되었습니다. MobiShop은이 중 하나입니다. 기본 상점 (https://www.assetstore.unity3d.com/en/#!/content/63636)을 사용하여 구매를 테스트하고 설정을 얻는 간단한 방법을 제공합니다. – Chris

답변

0

Google IAP SKU에 대해 확실하지 않은 경우 인앱 제품 탭에서 "이름/ID"아래의 ID를 확인하십시오. 스키가 브래킷에 있습니다. 예 : skc가 "abc (def)"이면 "def"입니다.

따라서 제품을 구매하려면 OpenIAB.purchaseProduct ("def")를 호출하기 만하면됩니다.

테스트에 영향이 있는지 확실하지 않은 경우 Google Dev에서 메인 계정 "테스트 액세스 권한이있는 Gmail 계정"을 확인하고 거기에 Gmail 계정을 추가하십시오.

희망이 있습니다.

+0

실제 SKU에 대해 확신 할 수 없었습니다. name이 아니라 OpenIAB.purchaseProduct() 함수에 정확히 전달해야만했던 것입니다. 결과적으로 사용자가 전달한 내용은 중요하지 않습니다. 잘못된 샘플 코드로 인해 잘못 사용하고있는 OpenIAB.mapSku() 함수를 통해 자신의 맞춤형 인앱 SKU 이름을 정의했습니다. mapSku()는 코드에서 사용할 문자열을 가져옵니다. OpenIAB 플러그인에 정의 된 저장소 이름. 및 다른 회사 또는 제품 참조가없는 SKU ID * 전용 *. – GarrickW

관련 문제