2013-12-16 48 views
0

我查看了幾個教程,但仍無法在我的應用中完成此部分。 對不起,我很新,所以請不要低估我。Android Google雲消息傳遞 - 無法完成

我就在我的表現得到了一切,在MainActivity我

public void registerService(){ 

    Intent registrationIntent=new Intent ("com.google.android.c2dm.intent.REGISTER"); 
    registrationIntent.putExtra("app",PendingIntent.getBroadcast(mContext,0, new Intent(), 0)); 
    registrationIntent.putExtra("sender", stringWithSenderID); 
    startService(registrationIntent); 
} 

GCMReceiver:

public class GCMReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     try{ 
      String action=intent.getAction(); 
      if (action.equals("com.google.android.c2dm.intent.REGISTRATION")){ 
       String registrationid=intent.getStringExtra("registration_id"); 
       Log.d("MyLog","registrationid ="+registrationid); 
       String error= intent.getStringExtra("error"); 
       String unregistered=intent.getStringExtra("unregistered"); 

      } 
      else if (action.equals("com.google.android.c2dm.intent.RECEIVE")){ 
       String data1=intent.getStringExtra("data1"); 
       String data2=intent.getStringExtra("data2"); 

      } 
     } finally{ 

     } 

    } 

} 

所以我得到了我的registration_id登錄正確的,我該怎麼做?我需要以某種方式將它發送給服務器嗎?

+0

是,到您的服務器,從那裏您將發送雲命令。 –

+0

[如何從Android應用程序調用服務器應用程序servlet註冊設備時,實施GCM]可能重複(http://stackoverflow.com/questions/18551266/how-to-call-server-app-servlet-from-android- – Eran

回答

0

我認爲它可以幫助你:

public String Sender_id = "your_google_api_sender_id"; 
try { 
      GCMRegistrar.checkDevice(this); 
      GCMRegistrar.checkManifest(this); 
      String regId = GCMRegistrar.getRegistrationId(this); 

      if (regId.equals("")) { 
       GCMRegistrar.register(this, Sender_id); 
      } else { 
      } 

     } catch (Exception e) { 
      // TODO: handle exception 
      e.printStackTrace(); 

     } 

而在GCM Srevice我們要這樣寫:

public class GCMIntentService extends GCMBaseIntentService { 



    @Override 
    protected void onError(Context context, String error) { 
     // TODO Auto-generated method stub 
     if (error != null) { 
      // optionally retry using exponential back-off 
      // (see Advanced Topics) 
      Toast.makeText(getBaseContext(), "" + error, Toast.LENGTH_SHORT) 
        .show(); 
     } 

    } 

    public GCMIntentService() { 
     super("your_snde_id"); 
     // SENDER_ID is my project id into google account url 
     // TODO Auto-generated constructor stub 
    } 

    public GCMIntentService(String senderId) { 
     super(senderId); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    protected void onMessage(Context context, Intent intent) { 
     String message = intent.getStringExtra("message"); 
     // TODO Auto-generated method stub 
     //createNotification(context, message); 

    } 

    @Override 
    protected void onRegistered(Context context, String regId) { 
     // TODO Auto-generated method stub 
     // you need to handle what you have to do after registration 

    } 

    @Override 
    protected void onUnregistered(Context context, String error) { 
     // TODO Auto-generated method stub 

    } 





} 

和清單文件是這樣的:

<permission 
     android:name="your.package.permission.C2D_MESSAGE" 
     android:protectionLevel="signature" /> 

    <uses-permission android:name="your.package.permission.C2D_MESSAGE" /> 
    <!-- App receives GCM messages. --> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 

<receiver 
      android:name="com.google.android.gcm.GCMBroadcastReceiver" 
      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" /> 
       <action android:name="com.google.android.c2dm.intent.UNREGISTER" /> 

       <category android:name="com.activelifeapps.android.alAlleghany" /> 
      </intent-filter> 
     </receiver> 

     <service android:name="your.package.GCMIntentService" /> 
+0

方法createNotification(上下文,字符串)是未定義的類型GCMIntentService – user2976267

+0

這是我自己的方法來顯示通知消息接收 –

+0

行..所以..我怎麼做到這一點消息作爲推送通知?我怎麼能做出這樣的消息,與我得到的其他推送通知一起使用? – user2976267

相關問題