2016-04-26 160 views
2

接收到通知時,我沒有聽到聲音,振動或光線。有人能告訴我我錯過了什麼嗎?Android:推送通知沒有聲音/振動/光線

我也有一些其他問題:

1)我只得到指定的圖標時,應用程序打開。當應用程序關閉時,我得到了android徽標圖標(我想這是因爲我還沒有定義應用程序圖標)。

2.)股票代碼文本僅在應用程序打開時顯示。

3.)當應用程序打開時,我沒有得到內容文本,只有內容標題。

SOLUTION:發生這種情況是因爲我在以前的版本中使用了com.google.android.gms:play-services-gcm:8.4.0

確保在服務器上發送的通知數組僅包含鍵/值對e = 0,同時在數據陣列中發送消息信息。

此問題已經在這裏有很大答案:After updating Google play services to 8.4.0 push notifications displayed by themselves

這是我的資料來源:

public class MyGcmListenerService extends GcmListenerService { 

    private final static String TAG = "GCM_Listener"; 

    @Override 
    public void onMessageReceived(String from, Bundle data) { 
     String message = data.getString("message"); 
     Log.d(TAG, "From: " + from + " (" + message); 

     // Sets an ID for the notification 
     SharedPreferences sharedPreferences = getSharedPreferences(getString(R.string.sharedPreferenceStore_default), Context.MODE_PRIVATE); 

     int mNotificationId = sharedPreferences.getInt("id_notification", 0); 
     mNotificationId++; 

     NotificationCompat.Builder mBuilder = 
       new NotificationCompat.Builder(this) 
         .setSmallIcon(R.drawable.all_picks_made_indicator) 
         .setAutoCancel(true) 
         .setContentTitle("Product - " + mNotificationId) 
         .setContentText(message) 
         .setTicker("Product Notification received"); 



     // Because clicking the notification opens a new ("special") activity, there's no need to create an artificial back stack. 
     PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, DetectLoginActivity.class), PendingIntent.FLAG_UPDATE_CURRENT); 
     mBuilder.setContentIntent(resultPendingIntent); 

     // Gets an instance of the NotificationManager service 
     NotificationManager mNotifyMgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
     // Builds the notification and issues it. 
     Notification notification = mBuilder.build(); 
     notification.defaults = Notification.DEFAULT_ALL; 
     mNotifyMgr.notify(mNotificationId, notification); 

     SharedPreferences.Editor editor = sharedPreferences.edit(); 
     editor.putInt("id_notification", mNotificationId); 
     editor.commit(); 
    } 
} 

回答

2

自定音效推送通知

notification.sound = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.pop); 

在你的代碼更改

Notification notification = mBuilder.build(); 
    notification.defaults = Notification.DEFAULT_ALL; 
    mNotifyMgr.notify(mNotificationId, notification); 

要。

notification.sound = Uri.parse("android.resource://" + getPackageName() + "/" +R.raw.pop); 
notification.defaults |= Notification.DEFAULT_VIBRATE; 
+1

非常感謝! – Markus

+0

當我殺了一個應用程序,然後收到推送通知沒有振動。在其他情況下,通知有振動。任何人都知道原因? – nAkhmedov

0
mBuilder.setVibrate(new long[]{1000, 1000, 1000, 1000, 1000}); 
mBuilder.setLights(getResources().getColor(R.color.mainColor), 1000, 1000); 

你可以設置顏色和振動生成器對象

+1

類似的聲音方法 – kimchibooty

+0

我有notification.defaults = Notification.DEFAULT_ALL;已經 – Markus

0

你上缺少這樣的內容:

long[] pattern = new long[]{0, 100, 200, 100}; //two short beeps 
mBuilder.setVibrate(pattern); 
Notification note = mBuilder.build(); 
note.vibrate = pattern; 

這會給你振動。看看燈光,我手邊沒有那個代碼。

+0

我有notification.defaults = Notification.DEFAULT_ALL;已經。我沒有看到第一個在構建器類中指定振動的點,然後通過公共變量再次設置它 – Markus

+0

再次,它們沒有包含在DEFAULT_ALL選項中,請在閱讀文檔之前請嘗試與我討論一個工作解決方案那個論點。 – Shark

+0

該文檔(http://developer.android.com/reference/android/app/Notification.html)指出DEFAULT_ALL將使用默認的振動,光線和聲音。 – Markus