2

これは、Mopub やその他の広告ネットワークから見たものです。

java.io.IOException: 接続失敗

それらはすべて同じ問題を抱えているようです。

奇妙なことに、次のソースを使用してアプリから広告 ID を取得するのに問題はありません。正しい広告 ID を取得し、エラー ログはありません。すべての SDK で同じ問題が発生しています (接続エラー)。

どんな助けでも感謝します。

private void getAdvertisingId(AdvertisingIdHolder receiver) {

    AdvertisingIdClient.Info adInfo = null;
    String id = null;
    boolean isLAT = false;

    try {
        adInfo = AdvertisingIdClient.getAdvertisingIdInfo(App.getCtx());

        id = adInfo.getId();
        isLAT = adInfo.isLimitAdTrackingEnabled();
    } catch (IOException e) {
        SLog.e("error", e);
        // Unrecoverable error connecting to Google Play services (e.g.,
        // the old version of the service doesn't support getting AdvertisingId).
    } catch (GooglePlayServicesNotAvailableException e) {
        SLog.e("error", e);
        // Google Play services is not available entirely.
    } catch (GooglePlayServicesRepairableException e) {
        e.printStackTrace();
    }

    receiver.receive(id, isLAT); 
}
4

1 に答える 1

2

広告IDの取得に試行錯誤を繰り返した今日この頃です。ついにできた!現在のアクティビティのコンテキストの代わりに getApplicationContext() を渡すと、接続エラーを解決できます。以下は私の作業コードです:

private void getGaid() {
    new Thread(new Runnable() {

        @Override
        public void run() {
            try {
                String gaid = AdvertisingIdClient.getAdvertisingIdInfo(
                        getApplicationContext()).getId();
                if (gaid != null) {
                    Log.d("DEBUG", gaid);
                    // gaid get!
                }
            } catch (IllegalStateException e) {
                e.printStackTrace();
            } catch (GooglePlayServicesRepairableException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (GooglePlayServicesNotAvailableException e) {
                e.printStackTrace();
            }
        }
    }).start();
}

getGaid() は、スレッドがメイン UI スレッドによって呼び出される限り、ビューの onCreate()、onResume()、または onClick() に配置できます。

もう 1 つ必要なことは、Google Play Services ライブラリを最新バージョンに更新することです。こちらの公式ドキュメントにもあるように、古いバージョンのサービスでは AdvertisingId の取得がサポートされていないため、IOException が発生する可能性があります。

他に質問があれば遠慮なくコメントしてください。

于 2014-12-07T16:08:55.917 に答える