2016-05-27 21 views
6

Próbuję używać FireBase Cloud Messaging. Otrzymuję token, ale nie otrzymuję żadnych powiadomień z konsoli. Oto mój Manifest:FireBase Cloud Messaging Nie działa

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="careerage.jobseeker.app" 
android:hardwareAccelerated="true" 
android:versionCode="1" 
android:versionName="0.0.1"> 

<uses-sdk 
    android:minSdkVersion="16" 
    android:targetSdkVersion="23" /> 

<supports-screens 
    android:anyDensity="true" 
    android:largeScreens="true" 
    android:normalScreens="true" 
    android:resizeable="true" 
    android:smallScreens="true" 
    android:xlargeScreens="true" /> 

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

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

<application 
    android:hardwareAccelerated="true" 
    android:icon="@drawable/icon" 
    android:label="@string/app_name" 
    android:supportsRtl="true"> 
    <activity 
     android:name=".MainActivity" 
     android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" 
     android:label="@string/activity_name" 
     android:launchMode="singleTop" 
     android:theme="@android:style/Theme.DeviceDefault.NoActionBar" 
     android:windowSoftInputMode="adjustResize"> 
     <intent-filter android:label="@string/launcher_name"> 
      <action android:name="android.intent.action.MAIN" /> 

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

    <service 
     android:name=".TokenService"> 
     <intent-filter> 
      <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> 
     </intent-filter> 
    </service> 
    <service 
     android:name=".NotificationService"> 
     <intent-filter> 
      <action android:name="com.google.firebase.MESSAGING_EVENT"/> 
     </intent-filter> 
    </service> 
</application> 

A mój kod jest prawie taka sama jak z próby:

public class NotificationService extends FirebaseMessagingService { 

private void sendNotification(String messagebody) { 
    Intent intent = new Intent(this, MainActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 , intent, 
      PendingIntent.FLAG_ONE_SHOT); 

    Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
      .setSmallIcon(R.drawable.icon) 
      .setContentTitle("Notified") 
      .setContentText(messagebody) 
      .setAutoCancel(true) 
      .setSound(defaultSoundUri) 
      .setContentIntent(pendingIntent); 

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

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

private void sendSnackbar(String messagebody) 
{ 
    Toast.makeText(this,"Notified",Toast.LENGTH_LONG).show(); 
} 

@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 
    Toast.makeText(this,"Message Received",Toast.LENGTH_LONG).show(); 

     Log.d("Notification Received",remoteMessage.getNotification().getBody()); 

     sendNotification(remoteMessage.getNotification().getBody()); 
    sendSnackbar(remoteMessage.getNotification().getBody()); 
} 

} 

Sprawdziłem tutaj pytanie Firebase cloud messaging notification not received by device ale nadal nie działa.

+0

Czy wysyłasz ładunek za pomocą konsoli? –

+0

@McAwesomville Yep i jego praca z próbką –

+0

Przepraszamy. Nie widziałem wcześniej, już o tym wspomniałeś. W każdym razie, więc logi w twoim 'onMessageReceived()' nie pojawiły się po wysłaniu powiadomienia? Czy aplikacja znajdowała się na pierwszym planie lub w tle? –

Odpowiedz

-1

Musisz zmienić usługę, z całą nazwą pakietu jak poniżej,

<service 
    android:name="your.package.name.TokenService"> 
    <intent-filter> 
     <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> 
    </intent-filter> 
</service> 
<service 
    android:name="your.package.name.NotificationService"> 
    <intent-filter> 
     <action android:name="com.google.firebase.MESSAGING_EVENT"/> 
    </intent-filter> 
</service> 

Proszę dać mi znać, jeśli to nie działa.

+1

To źle. Android wie, gdzie szukać –

Powiązane problemy