2013-04-12 3 views
0

После Register в GCMRegistrar я быть_наст получить regID Удачно Моего MainActivity классаAndroid GCMIntentService BroadcastReceiver получать общий Сообщ вопрос

private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      String newMessage = intent.getExtras().getString(EXTRA_MESSAGE); 
      // Waking up mobile if it is sleeping    
       WakeLocker.acquire(getApplicationContext());   

        Here Im getting Message Id store in my sharedPref and make Login 

      // Releasing wake lock 
      WakeLocker.release(); 
     } 
    }; 

и это regID пропуска myLogin Апи SuccessFully, и хранить в Моем SharedPrefrence и когда снова при получении любого Сообщение от Server, затем мое regId ключ Переопределить и снова передать его моему login Api. я хочу сделать отдельный server Message и regIdMessage в

public class GCMIntentService extends GCMBaseIntentService { 

    private static final String TAG = "GCMIntentService"; 

    public GCMIntentService() { 
     super(SENDER_ID); 
    } 
    /** 
    * Method called on device registered 
    **/ 
    @Override 
    protected void onRegistered(Context context, String registrationId) { 
     Log.i(TAG, "Device registered: regId = " + registrationId); 
     displayMessage(context, "Your device registred with GCM"); 
     Log.d("NAME", MainActivity.name); 
     ServerUtilities.register(context, MainActivity.name, MainActivity.email, registrationId); 
    } 

    /** 
    * Method called on device un registred 
    * */ 
    @Override 
    protected void onUnregistered(Context context, String registrationId) { 
     Log.i(TAG, "Device unregistered"); 
     displayMessage(context, getString(R.string.gcm_unregistered)); 
     ServerUtilities.unregister(context, registrationId); 
    } 

    /** 
    * Method called on Receiving a new message 
    * */ 
    @Override 
    protected void onMessage(Context context, Intent intent) { 
     Log.i(TAG, "Received message"); 
     String message = intent.getExtras().getString("price"); 

     displayMessage(context, message); 
     // notifies user 
     generateNotification(context, message); 
    } 

    /** 
    * Method called on receiving a deleted message 
    * */ 
    @Override 
    protected void onDeletedMessages(Context context, int total) { 
     Log.i(TAG, "Received deleted messages notification"); 
     String message = getString(R.string.gcm_deleted, total); 
     displayMessage(context, message); 
     // notifies user 
     generateNotification(context, message); 
    } 

    /** 
    * Method called on Error 
    * */ 
    @Override 
    public void onError(Context context, String errorId) { 
     Log.i(TAG, "Received error: " + errorId); 
     displayMessage(context, getString(R.string.gcm_error, errorId)); 
    } 

    @Override 
    protected boolean onRecoverableError(Context context, String errorId) { 
     // log message 
     Log.i(TAG, "Received recoverable error: " + errorId); 
     displayMessage(context, getString(R.string.gcm_recoverable_error,errorId)); 
     return super.onRecoverableError(context, errorId); 
    } 

    /** 
    * Issues a notification to inform the user that server has sent a message. 
    */ 
    private static void generateNotification(Context context, String message) { 
     int icon = R.drawable.ic_launcher; 
     long when = System.currentTimeMillis(); 
     NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); 
     Notification notification = new Notification(icon, message, when); 

     String title = context.getString(R.string.app_name);   
     Intent notificationIntent = new Intent(context, MainActivity.class); 
     // set intent so it does not start a new activity 
     notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP); 
     PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent, 0); 
     notification.setLatestEventInfo(context, title, message, intent); 
     notification.flags |= Notification.FLAG_AUTO_CANCEL;   
     // Play default notification sound 
     notification.defaults |= Notification.DEFAULT_SOUND;   
     //notification.sound = Uri.parse("android.resource://" + context.getPackageName() + "your_sound_file_name.mp3");   
     // Vibrate if vibrate is enabled 
     notification.defaults |= Notification.DEFAULT_VIBRATE; 
     notificationManager.notify(0, notification);  

    } 

} 

также CommonUtilities является общим, чтобы показать сообщение

static void displayMessage(Context context, String message) { 
     Intent intent = new Intent(DISPLAY_MESSAGE_ACTION); 
     intent.putExtra(EXTRA_MESSAGE, message); 
     context.sendBroadcast(intent); 
    } 

мой вопрос, хотите сделать Seprate RegID и Server Message в BroadcastReceiver Намерение

ответ

1

вы можете дифференцировать в OnMessage с помощью параметра predefine set onMessage, как описано ниже.

Метод, вызываемый при получении нового сообщения

@Override 
     protected void onMessage(Context context, Intent intent) { 
      Log.i(TAG, "Received message"); 
      Log.i(TAG, "Received message"); 
      String message = intent.getExtras().getString("price"); 

      if(message!=null) 
      { 
        if(operation.equals("server")) 
        { 

         CommonUtilities.displayMessage(context, "message"); // call intent for message to server 
        } 
        else 
        { 
        //code for regId here 
         CommonUtilities.displayMessage(context, "regID"); // call intent for regid 
        } 
      } 
      displayMessage(context, message); 
      // notifies user 

     } 

CommonUtilities является общим, чтобы показать сообщение и может вызывать BroadcastReceiver на основе сообщения значения

static void displayMessage(Context context, String message) 
    { 

     if(message.equals("regID")) 
     { 
      //broadcast rec. for registrattion 
      Intent intent = new Intent(DISPLAY_MESSAGE_ACTION); 
      intent.putExtra(EXTRA_MESSAGE, message); 
      context.sendBroadcast(intent); 
     }else 
     { 
      //broadcast rec. for send message to server 
      Intent intent = new Intent(DISPLAY_MESSAGE_ACTION); 
      intent.putExtra(EXTRA_MESSAGE, message); 
      context.sendBroadcast(intent); 
     }  

     } 
+0

операции строкового значения, как сервер, где я могу дать –

+0

также в Сообщение получателя бродкаста - commn –

+0

- это выборка с сервера, например «Строковая операция = намерение.getExtras(). GetString (« операция »); когда вы отправляете данные на сервер, тогда вам нужно отправить операцию, например «sendMessge» или «regId», и сервер возвращает такое же значение. Можно использовать это значение и на основе этого значения u может вызывать широкий кастовый приемник. –

Смежные вопросы