1

そのため、自分のコードが機能していない理由がわかりません。基本的に、私は、ミレニアル メディア広告を自分が作成しているアプリに取り込むための Flash アクション スクリプト メソッドを取得しようとしています。しかし、アクション スクリプトから PHP を送信したときに、Millennial Media から応答が得られないように見えるため、少し行き詰っています。

PHPは次のとおりです。

<?php
/*--------------------------------------------------------------*/
/* Millennial Media PHP Ad Coding, v.7.4.20                     */
/* Copyright Millennial Media, Inc. 2006                        */
/*                                                              */
/* The following code requires PHP >= 4.3.0 and                 */
/* allow_url_fopen 1 set in php.ini file.                       */
/*                                                              */
/* NOTE:                                                        */
/* It is recommended that you lower the default_socket_timeout  */
/* value in the php.ini file to 5 seconds.                      */
/* This will prevent network connectivity from affecting        */
/* page loading.                                                */
/*--------------------------------------------------------------*/

/*------- Publisher Specific Section -------*/
$mm_placementid = XXXXX;
$mm_adserver = "ads.mp.mydas.mobi";

/* The default response will be echo'd on the page     */
/* if no Ad is returned, so any valid WML/XHTML string */
/* is acceptable.                                      */
$mm_default_response = "";

/*------------------------------------------*/

/*----------- BEGIN AD INITIALIZATION ----------*/
/*----- PLEASE DO NOT EDIT BELOW THIS LINE -----*/
$mm_id = "NONE";
$mm_ua = "NONE";
@$mm_ip = $_SERVER['REMOTE_ADDR'];

if (isset($_SERVER['HTTP_USER_AGENT'] )){
    $mm_ua = $_SERVER['HTTP_USER_AGENT'];
} 

if (isset($_SERVER['HTTP_X_UP_SUBNO'])) {
          $mm_id = $_SERVER['HTTP_X_UP_SUBNO'];
} elseif (isset($_SERVER['HTTP_XID'])) {
          $mm_id = $_SERVER['HTTP_XID'];
} elseif (isset($_SERVER['HTTP_CLIENTID'])) {
          $mm_id = $_SERVER['HTTP_CLIENTID'];
} else {
          $mm_id = $_SERVER['REMOTE_ADDR'];
}

$mm_url = "http://$mm_adserver/getAd.php5?apid=$mm_placementid&auid="
          . urlencode($mm_id) . "&ua=" . urlencode($mm_ua) . "&uip=" . urlencode($mm_id);
echo $mm_url;
/*------------ END AD INITIALIZATION -----------*/
?>

これは基本的に、次のように Actionscript ファイル内に広告を表示するために使用する、非常に長い URL を返します。

package
{
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    import flash.events.LocationChangeEvent;
    import flash.events.UncaughtErrorEvent;
    import flash.geom.Rectangle;
    import flash.media.StageWebView;
    import flash.net.URLLoader;
    import flash.net.URLLoaderDataFormat;
    import flash.net.URLRequest;
    import flash.net.URLRequestMethod;
    import flash.net.URLStream;
    import flash.net.URLVariables;

    public class Main extends Sprite
    {
        public var s:String = new String();
        public var final:String = new String();
        private var _swv:StageWebView;

        public function Main()
        {           
            initRequest();          
        } 

        public function initRequest():void {
            var request:URLRequest = new URLRequest("http://www.xxx.com.au/connect copy.php");

            request.method = URLRequestMethod.POST;

            var recVars:URLVariables = new URLVariables();

            request.data = recVars;     

            var loader:URLLoader = new URLLoader(request);
            loader.addEventListener(Event.COMPLETE, onComplete);
            loader.dataFormat = URLLoaderDataFormat.TEXT;
            loader.load(request);           

            function onComplete(event:Event):void{
                s = event.target.data;
            }           
            AdDisplay();    
        }


        public function AdDisplay():void {

            if (! _swv) {
                _swv = new StageWebView () ;
                _swv.viewPort = new Rectangle(stage.stageWidth/2 - 175,stage.stageHeight/2,500,500);

                _swv.loadURL(s);
                _swv.stage = stage;
            }
        }
        }
    }

これで、トレース ステートメントを使用して、返される URL が完全であり、使用できることがわかりました。

現在、次を返します。

http://ads.mp.mydas.mobi/getAd.php5?apid=56926&auid=144.132.17.0&ua=Mozilla%2F5.0+%28Android%3B+U%3B+en-GB%29+AppleWebKit%2F531. 9+%28KHTML%2C+like+Gecko%29+AdobeAIR%2F2.6&uip=144.132.17.0

しかし、それを StageWebView ボックスに入れて表示すると、何も表示されません! 私は以前にそれを機能させましたが、方法はわかりませんが、1 つの広告しか表示されませんでした。私はブラウザでテストしており、&uip= などと関係があるという結論に達しました。なぜなら、その IP アドレスを例で指定されたものに置き換えると 63.145.58.2 - 動作するからですグルーポンからさまざまな広告が大量に届きます。

私がここで無線を使用しているためかどうかはわかりませんが、単に拒否するか何か、または何が起こっているのかはわかりませんが、誰かが私が見逃していることを考えたり、何かを知っていたりすると、助けが得られますミレニアル メディアが 100% の確率で広告を表示しないことについて。

おー!最後に、広告が機能しているときにギャップを埋めるために自社広告を作成しようとしましたが、それも機能しませんでした...

みんな、ありがとう!

4

1 に答える 1

0

最後のオクテットが0のIPアドレスは本当に良いアドレスではないと確信しています。この種のアドレスへの/からのルーティングを思い出すことができるものから、ルート自体に応じてせいぜい散発的になります:)

それとは別に、実際のloadUrlメソッドが正常に実行されていることを(トレースやデバッグを使用して)確認できますか?その背後にあるコードはわかりませんが、ログに記録または伝播されないエラーイベントの処理やものがあるかどうかを確認する必要があります。

于 2011-09-28T08:45:26.420 に答える