0

Я googled _ctx является Null, и я был в шоке от того, что не нашел ничего, что касалось Android. Я надеюсь, что эта поза поможет кому-то, если мы найдем правильный ответ.as3 _ctx is null pozirk android в покупках приложений ANE

Вот ссылка на АНХ я использую: https://github.com/pozirk/AndroidInAppPurchase

Я понятия не имею, куда идти отсюда. Это когда-то работало теперь не так. :(

Я пытаюсь использовать InAppPurchase.ane Pozirk, который я использовал раньше, но внезапно его не работает. Я не уверен, что изменилось. Возможно, ANE или что-то в игре Google. Сейчас он не работает, и я продолжаю получать эту ошибку:

_ctx является нулевым TypeError:. Error # 1009: не удается получить доступ к свойству или методу нулевой ссылки на объект на com.pozirk.payment.android.: : InAppPurchase/init() [C: \ Users \ blah \ blah \ Android \ com \ pozirk \ payment \ android \ InAppPurchase.as: 46] здесьWeGo_fla :: MainTimeline/fl_MouseClickHandler() [hereWeGo_fla.MainTimeline :: frame1: 97]

import com.pozirk.payment.android.InAppPurchase; 
    import com.pozirk.payment.android.InAppPurchaseEvent; 
    import flash.display.MovieClip; 

    /** 
    * ... 
    * @author Ben Barnard 
    */ 

     var _iap:InAppPurchase; 


      _iap = new InAppPurchase(); 

      _iap.addEventListener(InAppPurchaseEvent.INIT_SUCCESS, onInitSuccess); 
      _iap.addEventListener(InAppPurchaseEvent.INIT_ERROR, onInitError); 

      _iap.addEventListener(InAppPurchaseEvent.PURCHASE_SUCCESS, onPurchaseSuccess); 
      _iap.addEventListener(InAppPurchaseEvent.PURCHASE_ALREADY_OWNED, onPurchaseSuccess); 
      _iap.addEventListener(InAppPurchaseEvent.PURCHASE_ERROR, onPurchaseError); 

      _iap.addEventListener(InAppPurchaseEvent.CONSUME_SUCCESS, onConsumeSuccess); 
      _iap.addEventListener(InAppPurchaseEvent.CONSUME_ERROR, onConsumeError); 

      _iap.addEventListener(InAppPurchaseEvent.RESTORE_SUCCESS, onRestoreSuccess); 
      _iap.addEventListener(InAppPurchaseEvent.RESTORE_ERROR, onRestoreError); 

      // Liscense Key 




     function onRestoreError(e:InAppPurchaseEvent):void 
     { 
      trace("Restore Error - " + e.toString()); 
      outputField.text = "Restore Error - " + e.toString() + e.data.toString(); 
     } 

     function onConsumeError(e:InAppPurchaseEvent):void 
     { 
      trace("Consume Error - " + e.toString()); 
      outputField.text = "Consume Error - " + e.toString() + e.data.toString(); 
     } 

     function onConsumeSuccess(e:InAppPurchaseEvent):void 
     { 
      trace("Consume Success - " + e.toString()); 
      outputField.text = "Consume Success - " + e.toString(); 

      // ------------------------------- THIS LINE PROMPTS THE USER TO PURCHASE THE ITEM ------------------------------- // 
      _iap.purchase("android.test.purchased", InAppPurchase.TYPE_INAPP); 
     } 

     function onPurchaseError(e:InAppPurchaseEvent):void 
     { 
      trace("Purchase Error - " + e.toString()); 
      outputField.text = "Purchase Error - " + e.toString(); 
     } 

     function onRestoreSuccess(e:InAppPurchaseEvent):void 
     { 
      trace("Restore Success - " + e.toString()); 

      // ------------------------------- THIS LINE CONSUMES THE "TEST" ITEM ------------------------------- // 
      _iap.consume("android.test.purchased"); 
     } 

     function onPurchaseSuccess(e:InAppPurchaseEvent):void 
     { 
      trace("Purchase Successful - " + e.data.toString()); 
      outputField.text = "Purchase Successful - " + e.data.toString(); 
     } 

     function onInitError(e:InAppPurchaseEvent):void 
     { 
      trace("Init Error - " + e.toString()); 
      outputField.text = "Init Error - " + e.toString(); 
     } 

     function onInitSuccess(e:InAppPurchaseEvent):void 
     { 
      trace("Init Success - " + e.toString()); 
      outputField.text = "Init Success - " + e.toString(); 

      // ------------------------------- THIS LINE RESTORES ALL PURCHASED ITEMS ------------------------------- // 
      //_iap.restore(InAppPurchase.TYPE_INAPP); 
     } 




    init.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler); 

function fl_MouseClickHandler(event:MouseEvent):void 
{ 
    _iap.init("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiM0Lpjf/S5JQOh0L5c3IQNawziFTT9WeJ9fAmQl5nXJdfVnRK9+mMCnHJlKz8omt9RljlrtLpOV4iy+/KUFgtZ/SCvF+Brpk9lAEe+SbifT2mNGNKgF3tCXSHTXX2Xuq9kw1CR0bDy0Jf36LE04zBo4jYV4RcWQ66ViS2JbTEXAugG5S71z+CJXo6o5uYG/mRZlHFRJkpp1ufDFg4dp8r2ApN3RXhMv9Rl3NCcwTk3R0/rmwCc80Uy94kX7hkgeBuj/AViFZMbzYzY8YLdx80cYYHPc/ofecXmCl6OorJiBC+GiMs/vBoyjr4EGeIqfp1WdZrxeaJzMzAWPNoY4mSwIDAQAB"); 
} 


purchase.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler_2); 

function fl_MouseClickHandler_2(event:MouseEvent):void 
{ 
    //_iap.restore(InAppPurchase.TYPE_INAPP); 
    _iap.purchase("android.test.purchased", InAppPurchase.TYPE_INAPP); 
} 


consume.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler_3); 

function fl_MouseClickHandler_3(event:MouseEvent):void 
{ 
    //_iap.restore(InAppPurchase.TYPE_INAPP); 
    _iap.consume("android.test.purchased"); 
} 

restore.addEventListener(MouseEvent.CLICK, rLove); 

function rLove(event:MouseEvent):void 
{ 
    //_iap.restore(InAppPurchase.TYPE_INAPP); 
    _iap.restore(InAppPurchase.TYPE_INAPP); 
} 

ответ

0

Вы не внесли файл ANE в свой проект должным образом. Этот вопрос уже задавали, и ответил: http://inside.pozirk.com/2013/02/18/adobe-air-in-app-purchase-native-extensions/#comment-87 http://inside.pozirk.com/2013/02/18/adobe-air-in-app-purchase-native-extensions/#comment-89

+0

Уверен, что у меня есть права на InAppPurchase.ane. Пожалуйста, взгляните и дайте мне знать. http://www.MassMediaMail.com/InAppPurchases.zip –

+0

Это Android In-App Billing, он не будет работать на ПК. – pozirk

+0

Да, я действительно экспортирую его на устройство Android, и это не сработает. У меня также был очень опытный друг, и он не мог заставить его работать. Считаете ли вы, что это проблема связывания, все еще основанная на fla, которую я отправил? Спасибо за ваши комментарии tho. –

0

Мой контрольный, после того, как мастерить FlashBuilder в течение 2 часов:

1) "проект"> Свойства> ActionScript Build Path> Native Extensions> Добавить ANE> " добавить InAppPurchase.ane»

2) "проект"> Свойства> ActionScript Сложение Упаковка> Google Android> Native Extensions> "выберите пакет InAppPurchase.ane"

3) ... AS3 код использует in-app-purchase API ...

4) ANE, похоже, терпит неудачу, если вы попытаетесь использовать его в режиме отладки; вместо этого следует использовать экспортированный APK.

5) FlashBuilder> Проект> Экспорт сборки выпуска:

  • Убедитесь, что АНХ входит в комплект поставки (Native Extensions)
  • Убедитесь, что используется правильный сертификат подписи.

6) Скопируйте созданный APK на Android-устройство.

7) Установите APK с помощью проводника файлов.

8) Приложение, наконец, запускается, вместо сбоя/висит при запуске.