2016-05-12 5 views
0

1) habe ich die Push implementieren notification.It gut funktioniert, wenn das Gerät mit dem Internet verbunden ist. (Dh) erhält eine Benachrichtigung von Server-SeiteAndroid Push-Benachrichtigung nicht erhalten, wenn Internet-ON

2), wenn das Gerät nicht ist mit dem Internet verbunden. wenn Server die Push-Nachricht senden. Und wenn das Gerät mit dem Internet verbunden ist .. es nicht die Push-Nachricht .. Dies ist das Problem

3) Es gerne Push-Nachricht wie Whats App..when das Gerät ist mit dem Internet verbunden .. es sollte die Push-Nachricht erhalten ..

public class GcmIntentService extends GcmListenerService { 



    @Override 
    public void onMessageReceived(String from, Bundle data) { 
     String message = data.getString("title"); 
     String post_id=data.getString("id"); 
     boolean pushactive= SharedPreference.getInstance().getBool(this,"pushactive"); 
     if(pushactive) 
     generateNotification(message,post_id); 

    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     System.out.println("inside GcmListenerService"); 
    } 

    public void generateNotification(String message,String post_id) 
    { 
     Random random = new Random(); 
     int m = random.nextInt(9999 - 1000) + 1000; 
     Intent intent = new Intent(this, NewsDetailActivity.class); 
     intent.putExtra("isPush", true); 
     intent.putExtra("post_id",post_id); 
     intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) 
       .setSmallIcon(R.drawable.ic_launcher) 
       .setContentText(message) 
       .setContentTitle("EGToday") 
       .setAutoCancel(true) 
       .setContentIntent(PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)); 

     notificationManager.notify(m, mBuilder.build()); 
    } 
} 

wie dies zu erreichen?

Dies ist meine Absicht Serviceklasse.

das ist mein manifeast

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

    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.CAMERA"/> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <permission android:name="com.egt.permission.C2D_MESSAGE" 
     android:protectionLevel="signature" /> 
    <uses-permission android:name="com.egt.permission.C2D_MESSAGE" /> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 





    <application 
     android:name="com.egt.Constants.NetworkCall" 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 


     <activity android:name=".View.SplashPage"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:windowSoftInputMode="stateHidden|adjustPan" 
      android:name=".View.MainActivity" 
      android:screenOrientation="portrait"> 

     </activity> 
     <activity 

      android:name=".View.NewsDetailActivity" 
      android:screenOrientation="portrait"> 

     </activity> 
     <activity 

      android:name=".View.SearchActivity" 
      android:screenOrientation="portrait"> 

     </activity> 

     <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" /> 
       <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
       <category android:name="com.egt" /> 
      </intent-filter> 
     </receiver> 
     <service 
      android:name="com.egt.PushNotification.GcmIntentService" 
      android:exported="false" > 
      <intent-filter> 
       <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      </intent-filter> 
     </service> 

     <service android:name="com.egt.PushNotification.GcmRegistration" 
      android:exported="false" /> 


    </application> 

</manifest> 
+0

Ausgabe tatsächlich nicht in der mobilen Anwendung bitte Ihre Server-Side-Code überprüfen, überprüfen Sie bitte Antwort folgende –

+0

bitte ur Server-Seite Code schreiben –

+0

Ich benutze Wordpress-Plugin für pushnotification url: https: //wordpress.org/plugins/ Push-Notifications-for-wp/screenshots/ –

Antwort

0

In Ihrer Seite-Server delayWhileIdle (true)

Wenn das Gerät aber im Leerlauf angeschlossen ist, wird die Nachricht noch es sei denn, der delay_while_idle sofort lieferbar Flag wird auf "Wahr" gesetzt. Andernfalls wird es in den GCM-Servern gespeichert, bis das Gerät aktiviert ist. Und hier spielt das collapse_key Flag eine Rolle: wenn dort bereits eine Nachricht mit dem gleichen Collapse Key (und Registrierungs-ID) gespeichert ist und auf die Zustellung wartet, wird die alte Nachricht verworfen und die neue Nachricht wird ihren Platz einnehmen (das heißt, die alte Nachricht wird von dem neuen kollabiert sein).

Ex.

Message message = new Message.Builder().delayWhileIdle(true).addData(MESSAGE_KEY,text).build(); 
+0

Bitte schauen Sie auf meine Absicht Service-Code .. –

+0

Dieser GcmListenerService wird nach 30-45 Minuten nach dem Herstellen der Verbindung zum Internet aufgerufen ... –

Verwandte Themen