Cannot get push notification from Urban Airship

2019-04-20 20:55发布

问题:

I am integrating Urban Airship to my Android application. I got a sample code from there and I followed the same procedure in order to invoke it from my application. But, I don't get any push notification on my device.

Can anyone guide me how to integrate the Urban Airship in Android application? How to send the AppId and GCM Register ID to Urban Airship server and getting the notification?

public class MyApplication extends Application {

    public static SharedPreferences PREFS_TOKEN;
    public static final String PREFERENCE = "UrbanAirship";
    public static String tokenKey;

    @Override
    public void onCreate() {
        super.onCreate();

        AirshipConfigOptions options = AirshipConfigOptions
                .loadDefaultOptions(this);

        UAirship.takeOff(this, options);
        PushManager.enablePush();

        // Optionally, customize your config at runtime:
        //
        // options.inProduction = false;
        // options.developmentAppKey = "Your Development App Key";
        // options.developmentAppSecret "Your Development App Secret";
        // UAirship.takeOff(this, options);

        Logger.logLevel = Log.VERBOSE;

        // use CustomPushNotificationBuilder to specify a custom layout
        CustomPushNotificationBuilder nb = new CustomPushNotificationBuilder();

        nb.statusBarIconDrawableId = R.drawable.icon;// custom status bar icon

        nb.layout = R.layout.notification;
        nb.layoutIconDrawableId = R.drawable.icon;// custom layout icon
        nb.layoutIconId = R.id.icon;
        nb.layoutSubjectId = R.id.subject;
        nb.layoutMessageId = R.id.message;

        // customize the sound played when a push is received
        // nb.soundUri =
        // Uri.parse("android.resource://"+this.getPackageName()+"/"
        // +R.raw.cat);

        String apid = PushManager.shared().getAPID();

        Logger.info("My Application onCreate - App APID: " + apid);

        PREFS_TOKEN = this.getSharedPreferences(PREFERENCE,
                Context.MODE_PRIVATE);
        Editor edit = PREFS_TOKEN.edit();

        if (apid != null && apid != "") {
            edit.putString(PREFERENCE, apid);
            edit.commit();
        } else {
            edit.putString(PREFERENCE, apid);
            edit.commit();
        }

        tokenKey = PREFS_TOKEN.getString(PREFERENCE, "");
        System.out.println("---------- - App APID: " + tokenKey);

        PushManager.shared().setNotificationBuilder(nb);
        PushManager.shared().setIntentReceiver(IntentReceiver.class);
    }
}

IntentReceiver

public class IntentReceiver extends BroadcastReceiver {

    private static final String logTag = "PushSample";
    public static String APID_UPDATED_ACTION_SUFFIX = ".apid.updated";

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i(logTag, "Received intent: " + intent.toString());
        String action = intent.getAction();

        if (action.equals(PushManager.ACTION_PUSH_RECEIVED)) {
            int id = intent.getIntExtra(PushManager.EXTRA_NOTIFICATION_ID, 0);

            // Id
            String ap_id = intent.getStringExtra(PushManager.EXTRA_APID);

            System.out.println("IntentReceiver::- ID::-" + ap_id);

            Log.i(logTag,
                    "Received push notification. Alert: "
                            + intent.getStringExtra(PushManager.EXTRA_ALERT)
                            + " [NotificationID=" + id + "]");

            logPushExtras(intent);
        } else if (action.equals(PushManager.ACTION_NOTIFICATION_OPENED)) {
            Log.i(logTag,
                    "User clicked notification. Message: "
                            + intent.getStringExtra(PushManager.EXTRA_ALERT));

            logPushExtras(intent);

            Intent launch = new Intent(Intent.ACTION_MAIN);
            launch.setClass(UAirship.shared().getApplicationContext(),
                    SplashMainActivity.class);
            launch.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            UAirship.shared().getApplicationContext().startActivity(launch);
        } else if (action.equals(PushManager.ACTION_REGISTRATION_FINISHED)) {
            Log.i(logTag,
                    "Registration complete. APID:"
                            + intent.getStringExtra(PushManager.EXTRA_APID)
                            + ". Valid: "
                            + intent.getBooleanExtra(
                                    PushManager.EXTRA_REGISTRATION_VALID, false));

            // Notify any app-specific listeners
            Intent launch = new Intent(UAirship.getPackageName()
                    + APID_UPDATED_ACTION_SUFFIX);
            UAirship.shared().getApplicationContext().sendBroadcast(launch);
        } else if (action.equals(GCMMessageHandler.ACTION_GCM_DELETED_MESSAGES)) {
            Log.i(logTag,
                "The GCM service deleted "
                        + intent.getStringExtra(GCMMessageHandler.EXTRA_GCM_TOTAL_DELETED)
                        + " messages.");
        }
    }

    /**
     * Log the values sent in the payload's "extra" dictionary.
     * 
     * @param intent
     *            A PushManager.ACTION_NOTIFICATION_OPENED or
     *            ACTION_PUSH_RECEIVED intent.
     */
    private void logPushExtras(Intent intent) {
        Set<String> keys = intent.getExtras().keySet();
        for (String key : keys) {
            // ignore standard C2DM extra keys
            List<String> ignoredKeys = (List<String>) Arrays.asList(
                    "collapse_key",// c2dm collapse key
                    "from",// c2dm sender
                    PushManager.EXTRA_NOTIFICATION_ID,  // int id of generated
                                                        // notification
                                                        // (ACTION_PUSH_RECEIVED
                                                        // only)
                    PushManager.EXTRA_PUSH_ID,// internal UA push id
                    PushManager.EXTRA_ALERT);// ignore alert
            if (ignoredKeys.contains(key)) {
                continue;
            }
            Log.i(logTag,
                    "Push Notification Extra: [" + key + " : "
                            + intent.getStringExtra(key) + "]");
        }
    }
}

LogCat: Application send request and get the App Id

07-29 15:57:28.794: E/Trace(13468): error opening trace file: No such file or directory (2)
07-29 15:57:28.814: I/ActivityThread(13468): Pub com.dimdimsumapp.aniemoticonsfree.urbanairship.provider:com.urbanairship.UrbanAirshipProvider
07-29 15:57:28.934: D/dimdimsum - UALib(13468): Airship Take Off! Lib Version: 3.0.0 / App key = ydNnhfVFSa-mBbxvZsrSTg
07-29 15:57:28.934: D/dimdimsum - UALib(13468): In Production? false
07-29 15:57:29.024: D/dimdimsum - UALib(13468): Initializing Push.
**07-29 15:57:29.064: D/dimdimsum APID(13468): ceb76a95-e6d0-459e-a6ef-942ceddd750d**
07-29 15:57:29.064: D/dimdimsum - UALib(13468): Initializing Analytics.
07-29 15:57:29.104: I/dimdimsum - UALib(13468): My Application onCreate - App APID: ceb76a95-e6d0-459e-a6ef-942ceddd750d
07-29 15:57:29.104: I/System.out(13468): ---------- - App APID: ceb76a95-e6d0-459e-a6ef-942ceddd750d
07-29 15:57:29.234: V/dimdimsum - UALib(13468): com.urbanairship.analytics.ActivityStartedEvent -
    {"data":{"class_name":"com.dimdimsumapp.aniemoticonsfree.SplashMainActivity","session_id":"6d266e92-6bd5-431b-bf52-fe270cb2b80d"},"type":"activity_started","event_id":"7885aac7-26bb-475a-8fa7-bad81dc8ab47","time":"1375093649"}
07-29 15:57:29.234: V/dimdimsum - UALib(13468): New session: 09ea147d-5a9f-4b5d-9bf6-1d7a4511a380
07-29 15:57:29.254: V/dimdimsum - UALib(13468): com.urbanairship.analytics.AppForegroundEvent -
    {"data":{"time_zone":19800,"session_id":"09ea147d-5a9f-4b5d-9bf6-1d7a4511a380","notification_types":["sound","vibrate"],"daylight_savings":false,"push_enabled":true,"carrier":"","lib_version":"3.0.0","connection_type":"wifi","package_version":"1.0","os_version":"4.1.1"},"type":"app_foreground","event_id":"d63915e7-e0be-4779-9c60-90cb2e535ed7","time":"1375093649"}

07-29 15:57:29.314: D/dimdimsum - UALib(13468): Push enabled: true
07-29 15:57:29.324: V/dimdimsum - UALib(13468): com.dimdimsumapp.aniemoticonsfree.urbanairship.analytics.APP_FOREGROUND
07-29 15:57:29.334: D/dimdimsum - UALib(13468): Starting GCM
07-29 15:57:29.334: I/System.out(13468): Extra Call::-3D Smiley
07-29 15:57:30.874: I/dimdimsum - UALib(13468): Using GCM Registration ID:
    APA91bEOcPZneTlt9ObegtkCj4QhO6FP-nym7LIE5YaTtTzUCayIFifG85kLG3Z3MXNgSMqyfBkt_B4NpaVdWR7TZmgZV6LkooqkR9uR48kZxgkxTriv3y9RVNQyDf3ahned53FF-2vnk7MxtOiaL_7bB1IW4Tbx-qnATWQpHFKrvcnVEsYoX9c
07-29 15:57:34.344: D/dalvikvm(13468): GC_CONCURRENT freed 16K, 9% free 9416K/10311K, paused 2ms+1ms, total 12ms
07-29 15:57:34.394: V/dimdimsum - UALib(13468): com.urbanairship.analytics.ActivityStartedEvent -
    {"data":{"class_name":"com.dimdimsumapp.aniemoticonsfree.SplashLodingActivity","session_id":"09ea147d-5a9f-4b5d-9bf6-1d7a4511a380"},"type":"activity_started","event_id":"505c5d2a-f98d-436b-a32f-0c24cf3bd378","time":"1375093654"}
07-29 15:57:34.464: D/dalvikvm(13468): GC_FOR_ALLOC freed 919K, 14% free 9413K/10823K, paused 10ms, total 10ms
07-29 15:57:34.544: V/dimdimsum - UALib(13468): com.urbanairship.analytics.ActivityStoppedEvent -
    {"data":{"class_name":"com.dimdimsumapp.aniemoticonsfree.SplashMainActivity","session_id":"09ea147d-5a9f-4b5d-9bf6-1d7a4511a380"},"type":"activity_stopped","event_id":"bfa4ee55-dbe3-40e6-b0f1-25655022a6a8","time":"1375093654"}
07-29 15:57:34.544: W/dimdimsum - UALib(13468): Activity com.dimdimsumapp.aniemoticonsfree.SplashMainActivity@411aa7a0 was not manually added during onStart(). Call UAirship.shared().getAnalytics().activityStarted in every activity's onStart() method.

07-29 15:57:38.374: I/dalvikvm(13468):   #17  pc 0005fab7  /system/lib/libdvm.so (dvmInvokeMethod(Object*, Method const*, ArrayObject*, ArrayObject*, ClassObject*, bool)+374)
07-29 15:57:44.984: V/dimdimsum - UALib(13468): com.urbanairship.analytics.ActivityStartedEvent -
    {"data":{"class_name":"com.dimdimsumapp.aniemoticonsfree.view.MenuActivity","session_id":"09ea147d-5a9f-4b5d-9bf6-1d7a4511a380"},"type":"activity_started","event_id":"7026224f-b14a-401f-b9c8-0b0c510e5442","time":"1375093664"}
07-29 15:57:44.984: V/BulletinBoardTabActivity(13468): Entered in Activity
07-29 15:57:44.994: D/dalvikvm(13468): DexOpt: --- BEGIN 'ads360220448.jar' (bootstrap=0) ---
07-29 15:57:45.054: E/ActivityThread(13468): Failed to find provider info for com.google.plus.platform
07-29 15:57:45.064: I/Ads(13468): To get test ads on this device, call adRequest.addTestDevice("E55D186D8620B7B943AC22C1DEFD4948");
07-29 15:57:45.074: I/[RevMob](13468): Loading Fullscreen
07-29 15:57:45.084: I/[RevMob](13468): The ad is not completely loaded yet. As soon as it is loaded, it is going to be displayed automatically.

07-29 15:57:45.094: W/System.err(13468):    at dalvik.system.NativeStart.main(Native Method)
07-29 15:57:45.754: V/dimdimsum - UALib(13468): com.urbanairship.analytics.ActivityStartedEvent -
    {"data":{"class_name":"com.dimdimsumapp.aniemoticonsfree.view.MainActivity","session_id":"09ea147d-5a9f-4b5d-9bf6-1d7a4511a380"},"type":"activity_started","event_id":"11d4e931-39d5-4374-b4bf-319d9abf022a","time":"1375093665"}
07-29 15:57:45.754: V/dimdimsum - UALib(13468): com.urbanairship.analytics.ActivityStartedEvent -
    {"data":{"class_name":"com.dimdimsumapp.aniemoticonsfree.MainTabActivity","session_id":"09ea147d-5a9f-4b5d-9bf6-1d7a4511a380"},"type":"activity_started","event_id":"a1f8a882-a2b4-4600-b62e-2108f296b599","time":"1375093665"}
07-29 15:57:45.834: I/Chartboost(13468): SHOULD REQUEST INSTERSTITIAL 'Default'?
07-29 15:57:46.024: V/dimdimsum - UALib(13468): com.urbanairship.analytics.ActivityStoppedEvent -
    {"data":{"class_name":"com.dimdimsumapp.aniemoticonsfree.SplashLodingActivity","session_id":"09ea147d-5a9f-4b5d-9bf6-1d7a4511a380"},"type":"activity_stopped","event_id":"8dab5740-b165-42d5-a7fb-965127319581","time":"1375093666"}
07-29 15:57:46.024: W/dimdimsum - UALib(13468): Activity com.dimdimsumapp.aniemoticonsfree.SplashLodingActivity@41257a40 was not manually added during onStart(). Call UAirship.shared().getAnalytics().activityStarted in every activity's onStart() method.
07-29 15:57:46.124: D/dalvikvm(13468): GC_CONCURRENT freed 792K, 10% free 10192K/11271K, paused 12ms+13ms, total 46ms
07-29 15:57:46.134: D/webviewglue(13468): nativeDestroy view: 0x400dbbc8
07-29 15:57:46.474: D/dalvikvm(13468): DexOpt: --- END 'ads360220448.jar' (success) ---
07-29 15:57:46.474: D/dalvikvm(13468): DEX prep '/data/data/com.dimdimsumapp.aniemoticonsfree/cache/ads360220448.jar': unzip in 0ms, rewrite 1486ms
07-29 15:57:49.714: D/[RevMob](13468): Server request successful (200)
07-29 15:57:49.714: D/[RevMob](13468): Server request successful (200)
07-29 15:57:49.734: I/Ads(13468): adRequestUrlHtml: <html><head><script
    src="http://media.admob.com/sdk-core-v40.js"></script><script>AFMA_getSdkConstants();AFMA_buildAdURL({"preqs":1,"session_id":"2193324013207180751","seq_num":"2","slotname":"a1514342105f35b","u_w":800,"msid":"com.dimdimsumapp.aniemoticonsfree","js":"afma-sdk-a-v6.4.1","bas_off":0,"net":"wi","app_name":"1.android.com.dimdimsumapp.aniemoticonsfree","hl":"en","smart_w":"full","gnt":0,"u_audio":1,"kw":[],"u_sd":1,"ms":"p0DRX3Xo5pLuR1fi0Ic10MS35Dw_drZEu_5_6RtMnJ822YUea_sQghGZZK0bPsKzzuAnPIWk8-yVqxb9BHIf_N-j3wpJBeSHhm826l5-piFZk6HwjYPzw6C41oIvK6Bow-j8W9VSM3ZqaMO7ybwSFgNQ_TLU8gO3E-5FOGlfGGXrNWF4JtTXnpsY5vWHbZyc1EehpK9IhJRBPHGqB1XvRy1lvg3wS3Ib-0Apre5d35WdzelWh5hs9_shmOeyTZDDX_-rpmVyAU_HYClt7ojGk5a_42e6Bk5LtbsUJ4EL2TTF7I7D18yarbwISoYIsSEDedrx_TIAT8XzCyc-ZcNqmw","mv":"80210010.com.android.vending","isu":"E55D186D8620B7B943AC22C1DEFD4948","format":"800x90_mb","oar":0,"smart_h":"auto","ad_pos":{"height":70,"visible":1,"y":55,"x":0,"width":800},"u_h":1232,"pt":0,"bas_on":0,"ptime":121});</script></head><body></body></html>
07-29 15:57:49.744: I/Ads(13468): adRequestUrlHtml: <html><head><script
    src="http://media.admob.com/sdk-core-v40.js"></script><script>AFMA_getSdkConstants();AFMA_buildAdURL({"preqs":0,"session_id":"2193324013207180751","seq_num":"1","slotname":"a1514342105f35b","u_w":800,"msid":"com.dimdimsumapp.aniemoticonsfree","js":"afma-sdk-a-v6.4.1","bas_off":0,"net":"wi","app_name":"1.android.com.dimdimsumapp.aniemoticonsfree","hl":"en","smart_w":"full","gnt":0,"u_audio":1,"kw":[],"u_sd":1,"ms":"XsSWrnHHD52AS1MoI-uXmIkhfG-hiLlwqgiB_WHMZUeTQmHYO_tZeAu0jgwxMfVMgcybiP5cHOyXxhGWCf-wJYtsCtLk1OJhJa7J-YGAOa1QlZFdC2H53dMvI-QopAY0PWqbYMIqLu7xNfEVIS7E-J618_jQ8i0Ydf3grtdafjeGhyRqxuakG7MadX0_CWU-l2INfQPW3ys0iK85uHegeY7ACM6Xmd5SPBt3KBrsP7fn7uPX2B7cNCuM09YPFgBAfFiA5GlEO-1aY7AI4RxgFkew_EJPDlKk42YxqTeI4xc-m7O7hHcE229JYlNopOkgPboiHXzA82k5j2uoCdZ5JQ","mv":"80210010.com.android.vending","isu":"E55D186D8620B7B943AC22C1DEFD4948","format":"800x90_mb","oar":0,"smart_h":"auto","ad_pos":{"height":0,"visible":0,"y":5,"x":0,"width":0},"u_h":1232,"pt":0,"bas_on":0,"ptime":0});</script></head><body></body></html>
07-29 15:57:49.814: V/WebRequest(13468): WebRequest::WebRequest, setPriority = 1
07-29 15:57:53.804: D/[RevMob](13468): Fullscreen static
07-29 15:57:53.804: W/SingleClientConnManager(13468): Invalid use of SingleClientConnManager: connection still allocated.
07-29 15:57:53.804: W/SingleClientConnManager(13468): Make sure to release the connection before allocating another one.
07-29 15:57:53.874: I/Ads(13468): Received ad url: <url:
    "http://googleads.g.doubleclick.net:80/mads/gma?preqs=1&session_id=2193324013207180751&seq_num=2&u_w=800&msid=com.dimdimsumapp.aniemoticonsfree&js=afma-sdk-a-v6.4.1&bas_off=0&net=wi&app_name=1.android.com.dimdimsumapp.aniemoticonsfree&hl=en&smart_w=full&gnt=0&u_audio=1&kw&u_sd=1&ms=p0DRX3Xo5pLuR1fi0Ic10MS35Dw_drZEu_5_6RtMnJ822YUea_sQghGZZK0bPsKzzuAnPIWk8-yVqxb9BHIf_N-j3wpJBeSHhm826l5-piFZk6HwjYPzw6C41oIvK6Bow-j8W9VSM3ZqaMO7ybwSFgNQ_TLU8gO3E-5FOGlfGGXrNWF4JtTXnpsY5vWHbZyc1EehpK9IhJRBPHGqB1XvRy1lvg3wS3Ib-0Apre5d35WdzelWh5hs9_shmOeyTZDDX_-rpmVyAU_HYClt7ojGk5a_42e6Bk5LtbsUJ4EL2TTF7I7D18yarbwISoYIsSEDedrx_TIAT8XzCyc-ZcNqmw&mv=80210010.com.android.vending&format=800x90_mb&oar=0&smart_h=auto&u_h=1232&bas_on=0&ptime=121&u_so=p&imbf=%40installed_markets%40&cap=t&output=html&region=mobile_app&u_tz=330&client_sdk=1&ex=1&slotname=a1514342105f35b&kw_type=broad&askip=1&gsb=wi&caps=inlineVideo_interactiveVideo_mraid1_th_autoplay_mediation_sdkAdmobApiForAds_di&eisu=hSCEQLwXlQ5zQs_QZvNYzuXzxV6V4206otKKrdAOuzZZ9PFeGAZbXn5F_iuYOfFvxOpKQDuYJAlW-YKlEH2LK90RIGT2if9ira5RJEckQgGBacn8GXzr1XLCWPXeV5ZR&et=10&jsv=53"
    type: "admob" afmaNotifyDt: "null" activationOverlayUrl: "null"
    useWebViewLoadUrl: "false">
07-29 15:57:53.884: I/Ads(13468): Ad url modified to http://googleads.g.doubleclick.net:80/mads/gma?preqs=1&session_id=2193324013207180751&seq_num=2&u_w=800&msid=com.dimdimsumapp.aniemoticonsfree&js=afma-sdk-a-v6.4.1&bas_off=0&net=wi&app_name=1.android.com.dimdimsumapp.aniemoticonsfree&hl=en&smart_w=full&gnt=0&u_audio=1&kw&u_sd=1&ms=p0DRX3Xo5pLuR1fi0Ic10MS35Dw_drZEu_5_6RtMnJ822YUea_sQghGZZK0bPsKzzuAnPIWk8-yVqxb9BHIf_N-j3wpJBeSHhm826l5-piFZk6HwjYPzw6C41oIvK6Bow-j8W9VSM3ZqaMO7ybwSFgNQ_TLU8gO3E-5FOGlfGGXrNWF4JtTXnpsY5vWHbZyc1EehpK9IhJRBPHGqB1XvRy1lvg3wS3Ib-0Apre5d35WdzelWh5hs9_shmOeyTZDDX_-rpmVyAU_HYClt7ojGk5a_42e6Bk5LtbsUJ4EL2TTF7I7D18yarbwISoYIsSEDedrx_TIAT8XzCyc-ZcNqmw&mv=80210010.com.android.vending&format=800x90_mb&oar=0&smart_h=auto&u_h=1232&bas_on=0&ptime=121&u_so=p&imbf=8009&cap=t&output=html&region=mobile_app&u_tz=330&client_sdk=1&ex=1&slotname=a1514342105f35b&kw_type=broad&askip=1&gsb=wi&caps=inlineVideo_interactiveVideo_mraid1_th_autoplay_mediation_sdkAdmobApiForAds_di&eisu=hSCEQLwXlQ5zQs_QZvNYzuXzxV6V4206otKKrdAOuzZZ9PFeGAZbXn5F_iuYOfFvxOpKQDuYJAlW-YKlEH2LK90RIGT2if9ira5RJEckQgGBacn8GXzr1XLCWPXeV5ZR&et=10&jsv=53
07-29 15:57:53.884: I/Ads(13468): Request scenario: Online server request.
07-29 15:57:53.964: I/Ads(13468): Received ad url: <url:
    "http://googleads.g.doubleclick.net:80/mads/gma?preqs=0&session_id=2193324013207180751&seq_num=1&u_w=800&msid=com.dimdimsumapp.aniemoticonsfree&js=afma-sdk-a-v6.4.1&bas_off=0&net=wi&app_name=1.android.com.dimdimsumapp.aniemoticonsfree&hl=en&smart_w=full&gnt=0&u_audio=1&kw&u_sd=1&ms=XsSWrnHHD52AS1MoI-uXmIkhfG-hiLlwqgiB_WHMZUeTQmHYO_tZeAu0jgwxMfVMgcybiP5cHOyXxhGWCf-wJYtsCtLk1OJhJa7J-YGAOa1QlZFdC2H53dMvI-QopAY0PWqbYMIqLu7xNfEVIS7E-J618_jQ8i0Ydf3grtdafjeGhyRqxuakG7MadX0_CWU-l2INfQPW3ys0iK85uHegeY7ACM6Xmd5SPBt3KBrsP7fn7uPX2B7cNCuM09YPFgBAfFiA5GlEO-1aY7AI4RxgFkew_EJPDlKk42YxqTeI4xc-m7O7hHcE229JYlNopOkgPboiHXzA82k5j2uoCdZ5JQ&mv=80210010.com.android.vending&format=800x90_mb&oar=0&smart_h=auto&u_h=1232&bas_on=0&ptime=0&u_so=p&imbf=%40installed_markets%40&cap=t&output=html&region=mobile_app&u_tz=330&client_sdk=1&ex=1&slotname=a1514342105f35b&kw_type=broad&gsb=wi&caps=inlineVideo_interactiveVideo_mraid1_th_autoplay_mediation_sdkAdmobApiForAds_di&eisu=mJ5gWZo5jcV51kF671otqywVPd9HzqJSLviR5bZ1ubyxvtFnkFW0XeSqgwQnl0L7hK3qzuEy3CknOkZ4iJxeI_txVvpNT5Pg6gY9_pum4vCyLu24OnWWj2P7naZKofgh&et=35&jsv=53"
    type: "admob" afmaNotifyDt: "null" activationOverlayUrl: "null"
    useWebViewLoadUrl: "false"
07-29 15:57:53.984: D/dalvikvm(13468): GC_CONCURRENT freed 3647K, 34% free 7864K/11783K, paused 4ms+4ms, total 53ms
07-29 15:57:53.994: I/Ads(13468): Ad url modified to http://googleads.g.doubleclick.net:80/mads/gma?preqs=0&session_id=2193324013207180751&seq_num=1&u_w=800&msid=com.dimdimsumapp.aniemoticonsfree&js=afma-sdk-a-v6.4.1&bas_off=0&net=wi&app_name=1.android.com.dimdimsumapp.aniemoticonsfree&hl=en&smart_w=full&gnt=0&u_audio=1&kw&u_sd=1&ms=XsSWrnHHD52AS1MoI-uXmIkhfG-hiLlwqgiB_WHMZUeTQmHYO_tZeAu0jgwxMfVMgcybiP5cHOyXxhGWCf-wJYtsCtLk1OJhJa7J-YGAOa1QlZFdC2H53dMvI-QopAY0PWqbYMIqLu7xNfEVIS7E-J618_jQ8i0Ydf3grtdafjeGhyRqxuakG7MadX0_CWU-l2INfQPW3ys0iK85uHegeY7ACM6Xmd5SPBt3KBrsP7fn7uPX2B7cNCuM09YPFgBAfFiA5GlEO-1aY7AI4RxgFkew_EJPDlKk42YxqTeI4xc-m7O7hHcE229JYlNopOkgPboiHXzA82k5j2uoCdZ5JQ&mv=80210010.com.android.vending&format=800x90_mb&oar=0&smart_h=auto&u_h=1232&bas_on=0&ptime=0&u_so=p&imbf=8009&cap=t&output=html&region=mobile_app&u_tz=330&client_sdk=1&ex=1&slotname=a1514342105f35b&kw_type=broad&gsb=wi&caps=inlineVideo_interactiveVideo_mraid1_th_autoplay_mediation_sdkAdmobApiForAds_di&eisu=mJ5gWZo5jcV51kF671otqywVPd9HzqJSLviR5bZ1ubyxvtFnkFW0XeSqgwQnl0L7hK3qzuEy3CknOkZ4iJxeI_txVvpNT5Pg6gY9_pum4vCyLu24OnWWj2P7naZKofgh&et=35&jsv=53
07-29 15:57:53.994: I/Ads(13468): Request scenario: Online server request.
07-29 15:57:54.134: D/dalvikvm(13468): GC_CONCURRENT freed 612K, 34% free 7863K/11783K, paused 6ms+3ms, total 54ms
07-29 15:57:54.134: D/dalvikvm(13468): WAIT_FOR_CONCURRENT_GC blocked 7ms
07-29 15:57:54.774: D/dalvikvm(13468): GC_FOR_ALLOC freed 37K, 34% free 7885K/11783K, paused 45ms, total 45ms
07-29 15:57:54.784: I/dalvikvm-heap(13468): Grow heap (frag case) to 11.956MB for 4194320-byte allocation
07-29 15:57:54.814: D/dalvikvm(13468): GC_CONCURRENT freed <1K, 25% free 11981K/15943K, paused 11ms+1ms, total 25ms
07-29 15:57:54.874: I/[RevMob](13468): Fullscreen loaded
07-29 15:57:54.894: D/webviewglue(13468): nativeDestroy view: 0x64fc17f0
07-29 15:57:54.904: I/Ads(13468): onReceiveAd()
07-29 15:57:54.924: V/dimdimsum - UALib(13468): com.urbanairship.analytics.ActivityStartedEvent -
    {"data":{"class_name":"com.revmob.ads.fullscreen.FullscreenActivity","session_id":"09ea147d-5a9f-4b5d-9bf6-1d7a4511a380"},"type":"activity_started","event_id":"0028a546-73b3-4d72-bf16-42b1fd03330f","time":"1375093674"}
07-29 15:57:55.524: V/dimdimsum - UALib(13468): com.urbanairship.analytics.ActivityStoppedEvent -
    {"data":{"class_name":"com.dimdimsumapp.aniemoticonsfree.MainTabActivity","session_id":"09ea147d-5a9f-4b5d-9bf6-1d7a4511a380"},"type":"activity_stopped","event_id":"a545b947-b649-4c7d-8d9c-3bab9fa5844a","time":"1375093675"}
07-29 15:57:55.524: W/dimdimsum - UALib(13468): Activity com.dimdimsumapp.aniemoticonsfree.MainTabActivity@4114d510 was not manually added during onStart(). Call UAirship.shared().getAnalytics().activityStarted in every activity's onStart() method.
07-29 15:57:55.524: V/dimdimsum - UALib(13468): com.urbanairship.analytics.ActivityStoppedEvent -
    {"data":{"class_name":"com.dimdimsumapp.aniemoticonsfree.view.MenuActivity","session_id":"09ea147d-5a9f-4b5d-9bf6-1d7a4511a380"},"type":"activity_stopped","event_id":"a15bbf00-cbcf-4ce5-9dc2-4132d38d459d","time":"1375093675"}
07-29 15:57:55.524: W/dimdimsum - UALib(13468): Activity com.dimdimsumapp.aniemoticonsfree.view.MenuActivity@4124c630 was not manually added during onStart(). Call UAirship.shared().getAnalytics().activityStarted in every activity's onStart() method.
07-29 15:57:55.534: V/dimdimsum - UALib(13468): com.urbanairship.analytics.ActivityStoppedEvent -
    {"data":{"class_name":"com.dimdimsumapp.aniemoticonsfree.view.MainActivity","session_id":"09ea147d-5a9f-4b5d-9bf6-1d7a4511a380"},"type":"activity_stopped","event_id":"014f5625-1c02-4fa4-af7a-131d2bdd7301","time":"1375093675"}
07-29 15:57:55.534: W/dimdimsum - UALib(13468): Activity com.dimdimsumapp.aniemoticonsfree.view.MainActivity@41504f18 was not manually added during onStart(). Call UAirship.shared().getAnalytics().activityStarted in every activity's onStart() method.
    content://com.dimdimsumapp.aniemoticonsfree.urbanairship.provider/preferences/com.urbanairship.analytics.LAST_SEND/insert
07-29 15:58:23.984: V/dimdimsum - UALib(13468): Notified of change of key com.urbanairship.analytics.LAST_SEND
07-29 15:58:23.994: I/dimdimsum - UALib(13468): Sending 1 events.
07-29 15:58:23.994: V/dimdimsum - UALib(13468): Set Timeout: 60000
07-29 15:58:23.994: V/dimdimsum - UALib(13468): Set Socket Buffer Size: 16384
07-29 15:58:24.004: V/dimdimsum - UALib(13468): GZIP'd: 228 into 200 (expected 57)
07-29 15:58:24.004: I/dimdimsum - UALib(13468): Sending Analytics to: https://combine.urbanairship.com/warp9/
07-29 15:58:24.994: I/dimdimsum - UALib(13468): Warp 9 response: 200
07-29 15:58:26.084: I/Chartboost(13468): INTERSTITIAL 'Default' REQUEST FAILED
07-29 15:59:23.994: V/dimdimsum - UALib(13468): Notifying of change to
    content://com.dimdimsumapp.aniemoticonsfree.urbanairship.provider/preferences/com.urbanairship.analytics.LAST_SEND/insert
07-29 15:59:24.004: V/dimdimsum - UALib(13468): Notified of change of key com.urbanairship.analytics.LAST_SEND
07-29 15:59:24.004: I/dimdimsum - UALib(13468): Sending 11 events.
07-29 15:59:24.004: V/dimdimsum - UALib(13468): Set Timeout: 60000
07-29 15:59:24.004: V/dimdimsum - UALib(13468): Set Socket Buffer Size: 16384
07-29 15:59:24.004: V/dimdimsum - UALib(13468): GZIP'd: 2623 into 688 (expected 655)
07-29 15:59:24.014: I/dimdimsum - UALib(13468): Sending Analytics to: https://combine.urbanairship.com/warp9/
07-29 15:59:29.554: I/dimdimsum - UALib(13468): Warp 9 response: 200

回答1:

These are the steps you have to follow:

Android Side:

  • Create a sample app.
  • Include the jar of urban airship to your libs folder. I think latest jar is 3.0.
  • Create a file inside assets folder called: airshipconfig.properties.

These are what you have to put inside airshipconfig.properties:

// app ID of the project in google API's console, called 'Project Number' (in overview page)
gcmSender = 123456789
transport = gcm
developmentAppKey = mqqwqP1gLRkuf-bQBhlwOow
developmentAppSecret = 4kqqwqJfRGmSRBd40bA_Wg
inProduction = false

Android Manifest has to be as follows:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.jbm.push"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <!-- REQUIRED PERMISSIONS (for Urban Airship GCM) -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.VIBRATE" />

    <!-- GCM requires a Google account. -->
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <!-- Keeps the processor from sleeping when a message is received. -->
    <uses-permission android:name="android.permission.WAKE_LOCK" />

    <!-- This app has permission to register with GCM and receive message -->
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

    <permission
        android:name="com.jbm.push.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.jbm.push.permission.C2D_MESSAGE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application
        android:name="com.jbm.push.MyApplication"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.jbm.push.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- REQUIRED for Urban Airship GCM -->
        <receiver android:name="com.urbanairship.CoreReceiver" />
        <receiver
            android:name="com.urbanairship.push.GCMPushReceiver"
            android:permission="com.google.android.c2dm.permission.SEND" >
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

                <!-- MODIFICATION REQUIRED - Use your package name as the category -->
                <category android:name="com.jbm.push" />
            </intent-filter>
            <!-- REQUIRED for detecting when the application is upgraded so it can request a new GCM ID -->
            <intent-filter>
                <action android:name="android.intent.action.PACKAGE_REPLACED" />

                <data android:scheme="package" />
            </intent-filter>
        </receiver>

        <service
            android:name="com.urbanairship.push.PushService"
            android:label="Push Notification Service" />
        <!-- REQUIRED only with UA Android lib version 2.1.4 and earlier. Do not include PushWorkerService with UA Android lib version 3.0.0+ since it has been deprecated -->
        <service
            android:name="com.urbanairship.push.PushWorkerService"
            android:label="Push Notification Worker Service" />
        <service
            android:name="com.urbanairship.analytics.EventService"
            android:label="Event Service" />

        <!-- This is required for persisting preferences related to push and location -->
        <!-- MODIFICATION REQUIRED - Use your package name + ".urbanairship.provider" in the android:authorities -->
        <provider
            android:name="com.urbanairship.UrbanAirshipProvider"
            android:authorities="com.jbm.push.urbanairship.provider"
            android:exported="false"
            android:multiprocess="true" />
        <!-- END OF REQUIRED ITEMS -->


        <!-- OPTIONAL (for segments support) -->
        <service
            android:name="com.urbanairship.location.LocationService"
            android:label="Segments Service" />

        <!-- OPTIONAL, if you want to receive push, push opened and registration completed intents -->
        <!-- Replace the receiver below with your package and class name -->
        <receiver android:name="com.jbm.push.IntentReceiver" />
    </application>

</manifest>

MyApplication.java:

public class MyApplication extends Application {

       @Override
       public void onCreate(){
           AirshipConfigOptions options = AirshipConfigOptions.loadDefaultOptions(this);
           UAirship.takeOff(this, options);
           PushManager.enablePush();

       }
    }

This is all that you require from the Android side. In order to send the push it is a must that you configure your app properly on urban airship site. Provide the android application's package name and the Google API Console project's server key: follow these steps: http://docs.urbanairship.com/dashboard/getting_started.html#configuring-services

Then simply send the message from the dashboard that airship has provided. I followed this tutorial:

http://docs.urbanairship.com/build/android.html