0

プロジェクトでFirebase Auth stuffを使用しています。今日私はFCMを自分のプロジェクトに組み込むことに決めました。しかし、Firebaseコンソールからの通知はありませんでした。私も再.jsonファイルをダウンロードしようとしましたが、うまくいきませんでした。あなたは私の問題についてどんな考えがありますか?Firebase Cloud Messagingの通知がデバイスで受信されない

のAndroidManifest.xml

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

<uses-permission android:name="android.permission.VIBRATE" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permisson.INTERNET" /> 

<!-- 
    The ACCESS_COARSE/FINE_LOCATION permissions are not required to use 
    Google Maps Android API v2, but you must specify either coarse or fine 
    location permissions for the 'MyLocation' functionality. 
--> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<!-- Cihazdan Google Servislerine erişmek için izin --> 
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
<!-- İndirilenlerin tutulması için izinler --> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<!-- OpenGL ES 2.0 Google Maps Android API v2 için gerekiyor --> 
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"></uses-permission> 
<uses-feature 
    android:glEsVersion="0x00020000" 
    android:required="true" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/oto_takip" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity 
     android:name=".MyIntro" 
     android:theme="@style/FullscreenTheme" /> 
    <activity 
     android:name=".MainActivity" 
     android:theme="@style/AppTheme.NoActionBar" /> 
    <activity 
     android:name=".AracEkle" 
     android:theme="@style/AppTheme.NoActionBar" /> 
    <activity 
     android:name=".InternetCon" 
     android:theme="@style/FullscreenTheme" /> 
    <activity 
     android:name=".IpuclariSayfasi" 
     android:theme="@style/AppTheme.NoActionBar" /> 
    <activity 
     android:name=".TrafficActivity" 
     android:theme="@style/AppTheme.NoActionBar" /> 
    <activity 
     android:name=".EngineActivity" 
     android:theme="@style/AppTheme.NoActionBar" /> 
    <activity 
     android:name=".AidActivity" 
     android:theme="@style/AppTheme.NoActionBar" /> 

    <!-- 
     The API key for Google Maps-based APIs is defined as a string resource. 
     (See the file "res/values/google_maps_api.xml"). 
     Note that the API key is linked to the encryption key used to sign the APK. 
     You need a different API key for each encryption key, including the release key that is used to 
     sign the APK for publishing. 
     You can define the keys for the debug and release targets in src/debug/ and src/release/. 
    --> 
    <meta-data 
     android:name="com.google.android.geo.API_KEY" 
     android:value="@string/google_maps_key" /> 
    <meta-data 
     android:name="com.google.android.gms.version" 
     android:value="@integer/google_play_services_version" /> 

    <activity 
     android:name=".MapsActivity" 
     android:label="@string/title_activity_maps" /> 

    <activity 
     android:name=".AyarlarActivity" 
     android:theme="@style/AppTheme.NoActionBar"> 
    </activity> 

    <activity android:name=".Hesabim" 
     android:theme="@style/AppTheme.NoActionBar"> 
    </activity> 

    <activity android:name=".Giris" 
     android:theme="@style/AppTheme.NoActionBar" 
     > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> <!-- Check this one --> 
     </intent-filter> 
    </activity> 

    <activity android:name=".KayitOl" 
     android:theme="@style/AppTheme.NoActionBar"> 
    </activity> 

    <service 
     android:name=".FirebaseMessageService" 
     android:enabled="true" 
     android:exported="true"> 
     <intent-filter> 
      <action android:name="com.google.firebase.MESSAGING_EVENT"/> 
     </intent-filter> 
    </service> 

    <service 
     android:name=".FirebaseIDService" 
     android:enabled="true" 
     android:exported="true"> 
     <intent-filter> 
      <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> 
     </intent-filter> 
    </service> 

</application> 

FirebaseMessageService.java

public void onMessageReceived(RemoteMessage remoteMessage){ 
    sendNotification(remoteMessage.getNotification().getBody()); 
} 

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.mipmap.oto_takip) 
      .setContentText(messageBody) 
      .setSound(defaultSoundUri) 
      .setContentIntent(pendingIntent); 
    NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
    notificationManager.notify(0, notificationBuilder.build()); 
} 

FirebaseIDService.java

public class FirebaseIDService extends FirebaseInstanceIdService 
{ 
private static final String TAG ="FirebaseIDService"; 
@Override 
public void onTokenRefresh() { 
    String refreshedToken = FirebaseInstanceId.getInstance().getToken(); 
    Log.d(TAG, "Token: " + refreshedToken); 

    // If you want to send messages to this application instance or 
    // manage this apps subscriptions on the server side, send the 
    // Instance ID token to your app server. 
    sendRegistrationToServer(refreshedToken); 
} 

private void sendRegistrationToServer(String refreshedToken) 
{ 
} 
    } 

私の問題はMainActiviy.javaまでではないと思いますが、私はあなたのためにそれを示しています。

MainActivity.java

public class MainActivity extends AppCompatActivity 
    implements NavigationView.OnNavigationItemSelectedListener{ 

private Fragment fragment; 
private FragmentManager fragmentManager; 
public TextView tarih; 
final String PREFS_NAME = "MyPrefsFile"; 
final String SHAREDPREF_DATE = "SharedPrefDate"; 
private FirebaseAuth firebaseAuth; 
private TextView textViewUserEmail; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    firebaseAuth = FirebaseAuth.getInstance(); 
    if(firebaseAuth.getCurrentUser()==null) 
    { 
     startActivity(new Intent(this,Giris.class)); 
     finish(); 
    } 
    setContentView(R.layout.activity_main); 

@SuppressWarnings("StatementWithEmptyBody") 
@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    // Navigation itemlerinin click olaylarını burada yapıyoruz. 
    int id = item.getItemId(); 
    if (id == R.id.nav_kullanici) 
    { 
     startActivity(new Intent(MainActivity.this,Hesabim.class)); 

    } 
    else if (id == R.id.nav_hatirlatma) 
    { 
     startActivity(new Intent(MainActivity.this,AyarlarActivity.class)); 
    } 
    else if (id == R.id.nav_ipucu) 
    { 
     startActivity(new Intent(MainActivity.this,IpuclariSayfasi.class)); 
    } 


    else if (id == R.id.nav_oyla) 
    { 


    } 
    else if (id == R.id.nav_cikis) 
    { 

     firebaseAuth.signOut(); 
     finish(); 
     startActivity(new Intent(MainActivity.this, Giris.class)); 

     } 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
     return true; 

} 
} 
+0

FCMトークンに直接送信してみましたか? –

+0

いいえ、どうすればいいですか?しかし、私はメッセージを送信していません。私はメッセージを受け取りたい。 –

+0

Btw、Androidエミュレータでメッセージを受信しようとしています。これは大丈夫ですか? –

答えて

0

あなたは正しくFirebaseを使用するようにアプリケーションを設定しているかどうかを確認することをお勧めします。プロジェクトのアプリディレクトリにあるbuild.gradleファイルにgoogle-servicesプラグインを追加します。

apply plugin: 'com.google.gms.google-services' 

詳細については、tutorialを参照してください。

さらに、add FCM dependencyapp/build.gradleファイルにこの依存関係があるかどうか確認してください。

compile 'com.google.firebase:firebase-messaging:10.2.0' 

この回答をまとめたSO postも役に立ちます。

関連する問題