Android Open Source - sdk-android-2 G C M Broadcast Receiver






From Project

Back to project page sdk-android-2.

License

The source code is released under:

Apache License

If you think the Android project sdk-android-2 listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/**
 * Copyright 2013 Medium Entertainment, Inc.
 */*from   w w  w  .  j a va 2  s  . c  o  m*/
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.playhaven.android.push;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import com.playhaven.android.PlayHaven;
import com.playhaven.android.req.PushTrackingRequest;

/**
 * Handles REGISTRATION and RECEIVE Intents from the system 
 * targeted for the application. 
 */
public class GCMBroadcastReceiver extends PushReceiver {
  public static final String REGID = "registration_id";
  public static final String ERROR = "error";
  public static final String UNREGISTERED = "unregistered";
  public static final String C2DM_REGISTRATION = "com.google.android.c2dm.intent.REGISTRATION";
  public static final String C2DM_RECEIVE = "com.google.android.c2dm.intent.RECEIVE";
  public static final String C2DM_REGISTER = "com.google.android.c2dm.intent.REGISTER";
  public static final String C2DM_UNREGISTER = "com.google.android.c2dm.intent.UNREGISTER";
  public static final String SERVICE_NOT_AVAILABLE = "SERVICE_NOT_AVAILABLE";
  
    @Override
    public final void onReceive(Context context, Intent intent) {
    mContext = context;
    mBundle = intent.getExtras();
    
        String action = intent.getAction();
      PlayHaven.v("Received broadcast: %s.", action);
    
        if (C2DM_REGISTRATION.equals(action)) {
          registration(intent, context);
        } else if (C2DM_RECEIVE.equals(action)) {
          this.interpretPush(intent, context);
        }
    }
    
    /**
     * Handle a registration event sent from Google's servers. 
     */
    private void registration(Intent intent, Context context) {
        String registrationId = intent.getStringExtra(REGID);
        String error = intent.getStringExtra(ERROR);
        String unregistered = intent.getStringExtra(UNREGISTERED); 

        if (registrationId != null) {
            SharedPreferences pref = PlayHaven.getPreferences(context);
            SharedPreferences.Editor edit = pref.edit();
            edit.putString(GCMBroadcastReceiver.REGID, registrationId);
            edit.commit();
            
            // A registration request will have no message_id, msg_campaign_id or content_id, these come from PH pushes.
        PushTrackingRequest trackingRequest = new PushTrackingRequest(registrationId, null, null, null);
        trackingRequest.send(context);
        }

        if (unregistered != null) {
          // We are unregistered with GCM, and now should clear our token and notify PlayHaven. 
            SharedPreferences pref = PlayHaven.getPreferences(context);
            SharedPreferences.Editor edit = pref.edit();
            edit.remove(GCMBroadcastReceiver.REGID);
            edit.commit();
            
            // An empty string for a registration_id prompts the server to deregister this device. 
        PushTrackingRequest trackingRequest = new PushTrackingRequest("", null, null, null);
        trackingRequest.send(context);
        
          PlayHaven.v("GCM has unregistered this application: %s", unregistered);
        }

        // @TODO: retry after wait when service unavailable 
        if (error != null) {
            if (SERVICE_NOT_AVAILABLE.equals(error)) {
              PlayHaven.e("GCM registration service unavailable."); 
            } else {
                PlayHaven.e("GCM registration error: " + error);
            }
        }
    }
}




Java Source Code List

com.playhaven.android.DeviceId.java
com.playhaven.android.PlacementListener.java
com.playhaven.android.Placement.java
com.playhaven.android.PlayHavenException.java
com.playhaven.android.PlayHaven.java
com.playhaven.android.PushPlacement.java
com.playhaven.android.cache.BulkCacheDownloader.java
com.playhaven.android.cache.CacheCleaner.java
com.playhaven.android.cache.CacheDownloader.java
com.playhaven.android.cache.CacheResponseHandler.java
com.playhaven.android.cache.Cache.java
com.playhaven.android.cache.CachedInfo.java
com.playhaven.android.cache.package-info.java
com.playhaven.android.compat.UnityCompat.java
com.playhaven.android.compat.VendorCompat.java
com.playhaven.android.data.ContentUnitType.java
com.playhaven.android.data.CustomEvent.java
com.playhaven.android.data.DataCollectionField.java
com.playhaven.android.data.JsonUrlExtractor.java
com.playhaven.android.data.Purchase.java
com.playhaven.android.data.Reward.java
com.playhaven.android.data.package-info.java
com.playhaven.android.diagnostic.APIValidationIndicators.java
com.playhaven.android.diagnostic.DiagnosticApp.java
com.playhaven.android.diagnostic.DiagnosticPreferences.java
com.playhaven.android.diagnostic.InstrumentationReceiver.java
com.playhaven.android.diagnostic.Launcher.java
com.playhaven.android.diagnostic.OutputBox.java
com.playhaven.android.diagnostic.RequestTypeAdapter.java
com.playhaven.android.diagnostic.RequestType.java
com.playhaven.android.examples.ContentExample2.java
com.playhaven.android.examples.ContentExample.java
com.playhaven.android.examples.DialogExample.java
com.playhaven.android.examples.DisplayOptExample.java
com.playhaven.android.examples.EmbeddedExample.java
com.playhaven.android.examples.IAPTrackingExample.java
com.playhaven.android.examples.LoggingExample.java
com.playhaven.android.examples.MoreGamesExample.java
com.playhaven.android.examples.NoContent1Example.java
com.playhaven.android.examples.NoContent2Example.java
com.playhaven.android.examples.OnResumeExample.java
com.playhaven.android.examples.OpenExample.java
com.playhaven.android.examples.OptInExample.java
com.playhaven.android.examples.PreloadDialogExample.java
com.playhaven.android.examples.PreloadExample.java
com.playhaven.android.examples.PurchaseExample.java
com.playhaven.android.examples.RewardExample.java
com.playhaven.android.examples.WebviewFullscreenExample.java
com.playhaven.android.push.GCMBroadcastReceiver.java
com.playhaven.android.push.GCMRegistrationRequest.java
com.playhaven.android.push.NotificationBuilder.java
com.playhaven.android.push.PushReceiver.java
com.playhaven.android.req.ContentDispatchRequest.java
com.playhaven.android.req.ContentDispatchType.java
com.playhaven.android.req.ContentRequest.java
com.playhaven.android.req.ContentUnitRequest.java
com.playhaven.android.req.CustomEventRequest.java
com.playhaven.android.req.Identifier.java
com.playhaven.android.req.InstallRequest.java
com.playhaven.android.req.MetadataRequest.java
com.playhaven.android.req.NoContentException.java
com.playhaven.android.req.NoIdentifierException.java
com.playhaven.android.req.OpenRequest.java
com.playhaven.android.req.PlayHavenRequest.java
com.playhaven.android.req.PurchaseTrackingRequest.java
com.playhaven.android.req.PushTrackingRequest.java
com.playhaven.android.req.RequestListener.java
com.playhaven.android.req.ServerErrorHandler.java
com.playhaven.android.req.SignatureException.java
com.playhaven.android.req.SubcontentRequest.java
com.playhaven.android.req.UrlRequest.java
com.playhaven.android.req.UserAgent.java
com.playhaven.android.req.package-info.java
com.playhaven.android.util.DisplayUtil.java
com.playhaven.android.util.GoogleAdvertisementUtil.java
com.playhaven.android.util.GooglePlayServicesUtil.java
com.playhaven.android.util.JsonUtil.java
com.playhaven.android.util.KontagentUtil.java
com.playhaven.android.util.MemoryReporter.java
com.playhaven.android.util.TimeZoneFormatter.java
com.playhaven.android.util.package-info.java
com.playhaven.android.view.Badge.java
com.playhaven.android.view.ChildView.java
com.playhaven.android.view.DefaultPlayHavenListener.java
com.playhaven.android.view.FrameManager.java
com.playhaven.android.view.FullScreen.java
com.playhaven.android.view.HTMLView.java
com.playhaven.android.view.MoreGames.java
com.playhaven.android.view.NativeView.java
com.playhaven.android.view.PlayHavenListener.java
com.playhaven.android.view.PlayHavenView.java
com.playhaven.android.view.Windowed.java
com.playhaven.android.view.package-info.java
com.playhaven.android.package-info.java
javax.annotation.Generated.java
javax.annotation.package-info.java
${package}.__artifactId__Activity.java