1

Benim ingilizce için özür dilerim. Bildirim için GCM kullanın, sunucu json kullanımı standart GCM formu this kullanın. Sorun: uygulama açıkken ve bildirimde bulunulduğunda, iyi niyetle iyi niyetle çalışarak fazladan işe yarar. Ancak uygulama kapalı olduğunda ve bildirim aldığımda, bu bildirime tıkladığımda uygulamadaki standart aktiviteyi açın. (Ne belirlediğimi değil) Bunun sebebi, uygulamanın kapanması durumunda androidin kendi bildirimini oluşturması ve bilmemesidir. Amaç ve etkinlik hakkında, uygulamada standart etkinlik açıyor. Bu sorunun çözümü sunucusundan click_action göndermek ve apaçık ihtiyacı böyle bir şey yapmak gerek:"Platform GCM ile bildirim mesajlaşma parametreleri için Parametreler" (android)

<intent-filter> 
    <action android:name="OPEN_ACTIVITY_1" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
</intent-filter> 

qestion:? i putExtra zaman kendi itme oluşturmak android cant'kullanma nasıl (bildirim için benim sınıf kullanmayın)

UPD:

public class GcmMessageHandler extends GcmListenerService { 

    static int count = 0; 

    @Override 
     public void onMessageReceived(String from, Bundle data) { 
String name = notification.getString("title"); 
String message = notification.getString("body"); 

Resources res = ctx.getResources(); 
      PowerManager pm = (PowerManager) ctx.getSystemService(Context.POWER_SERVICE); 
      PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG"); 
      wl.acquire(15000); 

      NotificationCompat.Builder mBuilder; 
      mBuilder = new NotificationCompat.Builder(ctx); 

      mBuilder.setSmallIcon(R.drawable.notification); 
      mBuilder.setLargeIcon(BitmapFactory.decodeResource(res, R.drawable.icon)); 

      mBuilder.setVibrate(new long[]{1000, 1000}); 
      mBuilder.setTicker(name + ":" + message); 
      mBuilder.setContentText(message); 
      mBuilder.setContentTitle(name); 
      mBuilder.setAutoCancel(true); 
      mBuilder.setDefaults(Notification.DEFAULT_ALL); 
      mBuilder.setStyle(new NotificationCompat.BigTextStyle().bigText(message)); 


      Intent i = new Intent(getApplicationContext(), Activity2.class); 
      i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 


      PendingIntent resultPendingIntent = 
        PendingIntent.getActivity(
          ctx, 
          count, 
          i, 
          PendingIntent.FLAG_UPDATE_CURRENT); 


      mBuilder.setContentIntent(resultPendingIntent); 
      NotificationManager myNotificationManager = (NotificationManager) 
        ctx.getSystemService(ctx.NOTIFICATION_SERVICE); 

      myNotificationManager.notify(count, mBuilder.build()); 
} 

} 

: sınıf bildirimi (sorun değil burada) oluşturmak UPD Manifest Sen bildirim

private void sendNotification(String from, String message) { 
     Bundle bundle = new Bundle(); 
     bundle.putString("name", from); 
     bundle.putString("message", message); 
     Intent intent = new Intent(this, ChatActivity.class); 
     intent.putExtra("INFO", bundle); 
     PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT); 
     Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     NotificationCompat.Builder builder = new NotificationCompat.Builder(this) 
       .setContentTitle(from) 
       .setSound(defaultSoundUri) 
       .setContentText(message) 
       .setSmallIcon(R.drawable.ic_notification) 
       .setAutoCancel(true) 
       .setContentIntent(pendingIntent); 

     NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

     notificationManager.notify(0, builder.build()); 
    } 

göndermek için bu birini kullanabilirsiniz Ve Manifest dosyasında WAKE_LOCK iznini ekleyin unutmayın

<!-- GCM --> 
     <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
     <uses-permission android:name="android.permission.WAKE_LOCK" /> 
     <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 

     <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 

     <permission android:name="myapp.permission.C2D_MESSAGE" 
      android:protectionLevel="signature" /> 
     <uses-permission android:name="myapp.permission.C2D_MESSAGE" /> 
     <!-- GCM END --> 



    <!-- GCM --> 
    <receiver 
     android:name="com.google.android.gms.gcm.GcmReceiver" 
     android:exported="true" 
     android:permission="com.google.android.c2dm.permission.SEND" > 
     <intent-filter> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      <category android:name="myapp" /> 
     </intent-filter> 
    </receiver> 

    <service android:name="push.GcmMessageHandler" 
     android:exported="false" > 
     <intent-filter> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
     </intent-filter> 
    </service> 

    <meta-data android:name="com.google.android.gms.version" 
     android:value="@integer/google_play_services_version" /> 

    <!-- GCM --> 

cevap

1

(i iznine ve GCM'yi kullandığınızda):

<uses-permission android:name="android.permission.WAKE_LOCK" /> 
+0

Verdiğiniz cevap için teşekkürler! Uygulamamı kapattım, sadece uygulama açıkken sınıfım, sadece uygulama açıkken, uygulama kapalıyken 'Activity2.class' açık değil, çünkü uygulama kapalı olduğunda gcm'in kendi bildirimini oluşturduğunu düşünüyorum. Ve gcm aktivite ve niyet ve putExtra görmüyorum. Uygulama kapatıldığında 'putExtra 'kullanımının ne anlama geldiğini bilmiyorum – b1065579

+0

Yukarıdaki izinleri eklediniz, uygulama çalıştırmanıza rağmen bildirim almanıza yardımcı olacak. Eğer hala uygun değilse –

+0

. Lütfen sorunuzu AndroidManifest.xml cihazınızdan kodun tamamını gönderin. –

İlgili konular