2

Я разрабатываю приложение для чата Android, используя PubNub и Backendless. В настоящее время я работаю над отправкой Push Notification пользователю, когда они получают новое сообщение чата. Я успешно интегрировал PubNub и GCM. Таким образом, я могу отправить уведомление на устройство, используя эти две службы. Я последовал этому руководству, чтобы сделать это.PubNub GCM Push Nortification не отображается в строке Nortification

https://www.pubnub.com/blog/2015-06-24-sending-receiving-android-push-notifications-with-gcm-google-cloud-messaging/

Но даже если сообщение уведомления отправляется, он не отображается в панели уведомлений мобильного телефона в качестве толкающего уведомления. Сообщение приходит на устройство с тоном. Но ни одно сообщение не отображается как панель уведомлений. Может кто-нибудь, пожалуйста, помогите мне в этом вопросе. Вот мой код до сих пор

Это мой AndroidManifest файл

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

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

<!--<receiver 
    android:name="your.package.name.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" /> 
     <category android:name="your.package.name" /> 
    </intent-filter> 
</receiver>--> 
    <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="your.package.name" /> 
     </intent-filter> 
    </receiver> 
<!-- [START gcm_listener] --> 
<service 
    android:name="your.package.name.MyGcmListenerService" 
    android:exported="false" > 
    <intent-filter> 
     <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
    </intent-filter> 
</service> 
<!-- [END gcm_listener] --> 
<!-- [START instanceId_listener] --> 
<service 
    android:name="your.package.name.MyInstanceIDListenerService" 
    android:exported="false"> 
    <intent-filter> 
     <action android:name="com.google.android.gms.iid.InstanceID"/> 
    </intent-filter> 
</service> 
<!-- [END instanceId_listener] --> 
<service 
    android:name="your.package.name.RegistrationIntentService" 
    android:exported="false"> 
</service> 

</application> 

Это мой MainActivity класса (некоторые части класса)

[Отправить метод уведомления]

public void sendNotification() { 
    PnGcmMessage gcmMessage = new PnGcmMessage(); 
    JSONObject jso = new JSONObject(); 
    try { 
     jso.put("GCMSays", "hi"); 
    } catch (JSONException e) { } 
    gcmMessage.setData(jso); 



    PnMessage message = new PnMessage(
      pubnub, 
      "GCMPush", 
      callback, 
      gcmMessage); 
    try { 
     message.publish(); 
    } catch (PubnubException e) { 
     e.printStackTrace(); 
    } 
} 

Это класс GCMListenerService

ublic class MyGcmListenerService extends GcmListenerService { 

private static final String TAG = "MyGcmListenerService"; 
// [START receive_message] 
@Override 
public void onMessageReceived(String from, Bundle data) { 
    String message = data.getString("message"); 
    Log.d(TAG, "From: " + from); 
    Log.d(TAG, "Message: " + message); 

    if (from.startsWith("/topics/")) { 
     // message received from some topic. 
    } else { 
     // normal downstream message. 
    } 
} 
/** 
* Create and show a simple notification containing the received GCM message. 
* 
* @param message GCM message received. 
*/ 
private void sendNotification(String message) { 
    Intent intent = new Intent(this, MainActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, 
      PendingIntent.FLAG_ONE_SHOT); 

    Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
      //.setSmallIcon(R.drawable.ic_stat_ic_notification) 
      .setContentTitle("GCM Message") 
      .setContentText(message) 
      .setAutoCancel(true) 
      .setSound(defaultSoundUri) 
      .setContentIntent(pendingIntent) 
      .setStyle(new NotificationCompat.BigTextStyle().bigText(message)); 

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

    notificationManager.notify(0 /* ID of notification */, notificationBuilder.build()); 

Может кто-нибудь скажет, что случилось с этой реализацией. Я могу дать вам больше кода, если вы хотите.

Заранее спасибо

ответ

2

Я нашел ошибку я сделал, когда я определение метода sendNortification. Я прокомментировал это. setSmallIcon Недвижимость в NotificationCompact, которая является обязательным уведомлением.

С благодарностью

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