2017-10-05 313 views
1

我试图让谷歌广告在我的游戏中。我使用Pozirk Ane admob.I在Actionscript 3设置中添加了库文件和接口。 当我测试调试,我得到这个错误。AIR admob问题#3500:扩展上下文没有名称的方法cacheInterstitial

ANE链接

https://github.com/pozirk/ANEAdMob

我想不通的地方是错误。

试图启动并使用URL C共同连接到播放器:/APK/Reklam/Testreklam-app.xml

[SWF] com.pozirk.ads.AdMob - 7065 bytes after decompression 
    [SWF] Testreklam.swf - 45613 bytes after decompression 
    ArgumentError: Error #3500: The extension context does not have a method with the name cacheInterstitial. 
     at flash.external::ExtensionContext/_call() 
     at flash.external::ExtensionContext/call() 
     at com.pozirk.ads.admob::AdMob/cacheInterstitial()[D:\Pozirk\_projects\ANEAdMob\air\AdMob\com\pozirk\ads\admob\AdMob.as:83] 
     at Main()[C:\APK\Reklam\Main.as:43] 
     at runtime::ContentPlayer/loadInitialContent() 
     at runtime::ContentPlayer/playRawContent() 
     at runtime::ContentPlayer/playContent() 
     at runtime::AppRunner/run() 
     at ADLAppEntry/run() 
     at global/runtime::ADLEntry() 

我Main.as代码

package { 

    import flash.display.MovieClip; 
    import com.pozirk.ads.admob.AdMob; 
    import com.pozirk.ads.admob.AdParams; 
    import com.pozirk.ads.admob.AdEvent; 
    import flash.events.MouseEvent; 

    public class Main extends MovieClip { 
    private var _bannerAdUID:String = "ca-app-pub-3940256099942544/6300978111";//BİZİMDEGİL 
    private var _intersAdUID:String = "ca-app-pub-4769962435850149/5055329136"; 
    protected var _banner:AdMob = new AdMob(); 
    protected var _inters:AdMob = new AdMob(); 
    private var _initOK:Boolean = false; 
    private var _isShow:Boolean = false; 
    private var _cacheOK:Boolean = false; 

     public function Main() { 
      // constructor code 
      btBanner.addEventListener(MouseEvent.CLICK, showBanner); 
      btInters.addEventListener(MouseEvent.CLICK, showInterstitial); 

      _banner.init(); 
_banner.addEventListener(AdEvent.INIT_OK, onInitEvent); 
_banner.addEventListener(AdEvent.INIT_FAIL, onEvent); 
_banner.addEventListener(AdEvent.BANNER_SHOW_OK, onEvent); 
_banner.addEventListener(AdEvent.BANNER_SHOW_FAIL, onEvent); 
_banner.addEventListener(AdEvent.BANNER_LEFT_APP, onEvent); 
_banner.addEventListener(AdEvent.BANNER_OPENED, onEvent); 
_banner.addEventListener(AdEvent.BANNER_CLOSED, onEvent); 

_inters.init(); 
_inters.addEventListener(AdEvent.INIT_OK, onInitEvent); 
_inters.addEventListener(AdEvent.INIT_FAIL, onEvent); 
_inters.addEventListener(AdEvent.INTERSTITIAL_SHOW_OK, onEvent); 
_inters.addEventListener(AdEvent.INTERSTITIAL_SHOW_FAIL, onEvent); 
_inters.addEventListener(AdEvent.INTERSTITIAL_CACHE_OK, onCacheEvent); 
_inters.addEventListener(AdEvent.INTERSTITIAL_CACHE_FAIL, onEvent); 
_inters.addEventListener(AdEvent.INTERSTITIAL_LEFT_APP, onEvent); 
_inters.addEventListener(AdEvent.INTERSTITIAL_OPENED, onEvent); 
_inters.addEventListener(AdEvent.INTERSTITIAL_CLOSED, onCloseIntersEvent); 

_inters.cacheInterstitial(_intersAdUID); 
     } 


     protected function onEvent(event:AdEvent):void { 

} 

protected function onInitEvent(event:AdEvent):void { 
     _initOK = true; 
} 

protected function onCacheEvent(event:AdEvent):void { 
     _cacheOK = true; 
} 

protected function onCloseIntersEvent(event:AdEvent):void { 
     _inters.cacheInterstitial(_intersAdUID); 
} 


//////////// 


private function showBanner(e:MouseEvent):void { 
     if(_initOK) { 
       if(!_isShow) { 
         _banner.show(_bannerAdUID, AdParams.SIZE_SMART_BANNER, AdParams.HALIGN_CENTER, AdParams.VALIGN_BOTTOM); 
         _isShow = true; 
       }else { 
         _banner.hide(); 
         _isShow = false; 
       } 
     } else { 
       trace("Banner Not Ready."); 
     } 
} 

private function showInterstitial(e:MouseEvent):void { 
     if(_initOK && _cacheOK) { 
       _inters.showInterstitial(); 
     } else { 
       trace("Inters Not Ready."); 
     } 
} 







    } 

} 

APP XML文件代码

<?xml version="1.0" encoding="UTF-8" standalone="no" ?> 
<application xmlns="http://ns.adobe.com/air/application/24.0"> 
    <id>Testreklam</id> 
    <versionNumber>1.0.0</versionNumber> 
    <versionLabel/> 
    <filename>Testreklam</filename> 
    <description/> 
<!-- To localize the description, use the following format for the description element.<description><text xml:lang="en">English App description goes here</text><text xml:lang="fr">French App description goes here</text><text xml:lang="ja">Japanese App description goes here</text></description>--> 
    <name>Testreklam</name> 
<!-- To localize the name, use the following format for the name element.<name><text xml:lang="en">English App name goes here</text><text xml:lang="fr">French App name goes here</text><text xml:lang="ja">Japanese App name goes here</text></name>--> 
    <copyright/> 
    <initialWindow> 
    <content>Testreklam.swf</content> 
    <systemChrome>standard</systemChrome> 
    <transparent>false</transparent> 
    <visible>true</visible> 
    <fullScreen>true</fullScreen> 
    <aspectRatio>portrait</aspectRatio> 
    <renderMode>direct</renderMode> 
    <autoOrients>false</autoOrients></initialWindow> 
    <icon> 
    <image72x72>AppIconsForPublish/Medal-2-icon.png</image72x72> 
    </icon> 
    <customUpdateUI>false</customUpdateUI> 
    <allowBrowserInvocation>false</allowBrowserInvocation> 
    <android> 
     <manifestAdditions> 
     <![CDATA[<manifest><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><application> 
<meta-data android:name="com.google.android.gms.version" android:value="4323000" /> <!-- should be android:value="@integer/google_play_services_version" --> <activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/> 
</application></manifest>]]> 
    </manifestAdditions> 
    </android> 
    <versionLabel> </versionLabel> 
    <extensions> 
    <extensionID>com.pozirk.ads.AdMob</extensionID> 
    </extensions> 
</application> 

回答

1

(1)尝试加入_inters自己的事件听众之前在做_inters.init();
(这样当你的init()发生时,听众就会准备好)。

(2)关于此错误:

ArgumentError: Error #3500:
"The extension context does not have a method with the name cacheInterstitial ."

尝试在实际设备例如测试代码:Android系统。它不能在桌面调试器上工作。
line 41 of AdMob.as(功能init():void)......你会发现if(err.errorID == 3500)

catch(err:Error) 
{ 
    var e:AdEvent = null; 
    if(err.errorID == 3500) 
     e = new AdEvent(AdEvent.INIT_FAIL, "Isn't it clear, that ANDROID Extension will NOT work on PC/Mac???"); 
    else 
     e = new AdEvent(AdEvent.INIT_FAIL, "ANE was not properly added to your project."); 
    this.dispatchEvent(e); 
}