0

ファイヤーベースのプッシュ通知を最初に取得しようとすると、あまりうまく行きません。私はそれを設定するhereを記載されているチュートリアルを踏襲しているが、私がしようとすると通知を送信するたびに、アプリは「unexpecedly閉じて」、および論理的には、以下のクラッシュ情報スロー:ファイヤーベースでのプッシュ通知の送信 - 致命的な除外(アンドロイド)

Logcat:

--------- beginning of crash 
04-23 23:04:28.081 7395-7395/com.surfdogdesigns.pandsi E/AndroidRuntime: FATAL EXCEPTION: main 
    Process: com.surfdogdesigns.pandsi, PID: 7395 
    java.lang.RuntimeException: Unable to instantiate service com.surfdogdesigns.pandsi.MainActivity$MyFirebaseMessagingService: java.lang.InstantiationException: class com.surfdogdesigns.pandsi.MainActivity$MyFirebaseMessagingService has no zero argument constructor 
     at android.app.ActivityThread.handleCreateService(ActivityThread.java:2746) 
     at android.app.ActivityThread.access$1800(ActivityThread.java:151) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1386) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:135) 
     at android.app.ActivityThread.main(ActivityThread.java:5254) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
     Caused by: java.lang.InstantiationException: class com.surfdogdesigns.pandsi.MainActivity$MyFirebaseMessagingService has no zero argument constructor 
     at java.lang.Class.newInstance(Class.java:1597) 
     at android.app.ActivityThread.handleCreateService(ActivityThread.java:2743) 
     at android.app.ActivityThread.access$1800(ActivityThread.java:151)  
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1386)  
     at android.os.Handler.dispatchMessage(Handler.java:102)  
     at android.os.Looper.loop(Looper.java:135)  
     at android.app.ActivityThread.main(ActivityThread.java:5254)  
     at java.lang.reflect.Method.invoke(Native Method)  
     at java.lang.reflect.Method.invoke(Method.java:372)  
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)  
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)  
     Caused by: java.lang.NoSuchMethodException: <init> [] 
     at java.lang.Class.getConstructor(Class.java:531) 
     at java.lang.Class.getDeclaredConstructor(Class.java:510) 
     at java.lang.Class.newInstance(Class.java:1595) 
     at android.app.ActivityThread.handleCreateService(ActivityThread.java:2743)  
     at android.app.ActivityThread.access$1800(ActivityThread.java:151)  
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1386)  
     at android.os.Handler.dispatchMessage(Handler.java:102)  
     at android.os.Looper.loop(Looper.java:135)  
     at android.app.ActivityThread.main(ActivityThread.java:5254)  
     at java.lang.reflect.Method.invoke(Native Method)  
     at java.lang.reflect.Method.invoke(Method.java:372)  
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)  
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)  
04-23 23:04:28.082 1543-1559/system_process W/ActivityManager: Force finishing activity 1 com.surfdogdesigns.pandsi/.MainActivity 
04-23 23:04:28.093 1164-1164/? E/EGL_emulation: tid 1164: eglCreateSyncKHR(1299): error 0x3004 (EGL_BAD_ATTRIBUTE) 
04-23 23:04:28.211 1543-1599/system_process I/OpenGLRenderer: Initialized EGL, version 1.4 
04-23 23:04:28.225 1174-1724/? E/Drm: Failed to find drm plugin 
04-23 23:04:28.226 2728-6161/com.google.android.gms.unstable W/DG.WV: Widevine DRM not supported on this device 
                     android.media.UnsupportedSchemeException: Failed to instantiate drm object. 
                      at android.media.MediaDrm.native_setup(Native Method) 
                      at android.media.MediaDrm.<init>(MediaDrm.java:180) 
                      at ono.a(:com.google.android.gms:122) 
                      at okh.run(:com.google.android.gms:1095) 
                      at lmq.run(:com.google.android.gms:450) 
                      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
                      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
                      at lra.run(:com.google.android.gms:17) 
                      at java.lang.Thread.run(Thread.java:818) 
04-23 23:04:28.661 1543-1564/system_process W/ActivityManager: Activity pause timeout for ActivityRecord{cb0d51e u0 com.surfdogdesigns.pandsi/.MainActivity t31 f} 
04-23 23:04:29.521 1828-2091/com.google.android.googlequicksearchbox W/OpenGLRenderer: Incorrectly called buildLayer on View: aep, destroying layer... 
04-23 23:04:29.633 3034-6156/com.google.android.gms.persistent W/GLSUser: [AppCertManager] IOException while requesting key: 
                      java.io.IOException: Invalid device key response. 
                       at ewg.a(:com.google.android.gms:274) 
                       at ewg.a(:com.google.android.gms:4238) 
                       at ewf.a(:com.google.android.gms:45) 
                       at evz.a(:com.google.android.gms:50) 
                       at evy.a(:com.google.android.gms:104) 
                       at com.google.android.gms.auth.account.be.legacy.AuthCronChimeraService.b(:com.google.android.gms:4049) 
                       at edi.call(:com.google.android.gms:2041) 
                       at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
                       at lmq.run(:com.google.android.gms:450) 
                       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
                       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
                       at lra.run(:com.google.android.gms:17) 
                       at java.lang.Thread.run(Thread.java:818) 
04-23 23:04:29.693 1646-1646/com.android.systemui W/ResourceType: No package identifier when getting value for resource number 0x00000000 
04-23 23:04:29.694 1646-1646/com.android.systemui W/PackageManager: Failure retrieving resources for com.surfdogdesigns.pandsi: Resource ID #0x0 
04-23 23:04:33.229 2285-7929/com.google.android.gms W/PlatformStatsUtil: Could not retrieve Usage & Diagnostics setting. Giving up. 
04-23 23:04:34.372 2285-2299/com.google.android.gms W/SQLiteConnectionPool: A SQLiteConnection object for database '/data/data/com.google.android.gms/databases/metrics.db' was leaked! Please fix your application to end transactions in progress properly and to close the database when it is no longer needed. 
04-23 23:04:34.380 2285-2299/com.google.android.gms W/SQLiteConnectionPool: A SQLiteConnection object for database '/data/data/com.google.android.gms/databases/help_responses.db.18' was leaked! Please fix your application to end transactions in progress properly and to close the database when it is no longer needed. 
04-23 23:04:34.388 2285-2299/com.google.android.gms W/SQLiteConnectionPool: A SQLiteConnection object for database '/data/data/com.google.android.gms/databases/auto_complete_suggestions.db' was leaked! Please fix your application to end transactions in progress properly and to close the database when it is no longer needed. 
04-23 23:04:39.325 1543-1564/system_process W/ActivityManager: Activity destroy timeout for ActivityRecord{cb0d51e u0 com.surfdogdesigns.pandsi/.MainActivity t31 f} 
04-23 23:04:42.527 8148-8148/? D/AndroidRuntime: >>>>>> START com.android.internal.os.RuntimeInit uid 0 <<<<<< 
04-23 23:04:42.532 8148-8148/? D/AndroidRuntime: CheckJNI is ON 
04-23 23:04:42.561 8148-8148/? E/memtrack: Couldn't load memtrack module (No such file or directory) 
04-23 23:04:42.561 8148-8148/? E/android.os.Debug: failed to load memtrack module: -2 
04-23 23:04:42.574 8148-8148/? D/AndroidRuntime: Calling main entry com.android.commands.am.Am 
04-23 23:04:42.579 1543-1560/system_process I/ActivityManager: Force stopping com.surfdogdesigns.pandsi appid=10058 user=0: from pid 8148 
04-23 23:04:42.579 1543-1560/system_process I/ActivityManager: Killing 7395:com.surfdogdesigns.pandsi/u0a58 (adj 0): stop com.surfdogdesigns.pandsi 
04-23 23:04:42.580 1543-1560/system_process W/libprocessgroup: failed to open /acct/uid_10058/pid_7395/cgroup.procs: No such file or directory 
04-23 23:04:42.588 1543-1560/system_process W/ActivityManager: Scheduling restart of crashed service com.surfdogdesigns.pandsi/.MainActivity$MyFirebaseMessagingService in 29020ms 
04-23 23:04:42.588 1543-1560/system_process I/ActivityManager: Force stopping service ServiceRecord{2a3bed30 u0 com.surfdogdesigns.pandsi/.MainActivity$MyFirebaseMessagingService} 
04-23 23:04:42.599 1543-1811/system_process I/ActivityManager: Killing 2654:com.android.settings/1000 (adj 15): empty #17 
04-23 23:04:42.599 1543-1811/system_process W/libprocessgroup: failed to open /acct/uid_1000/pid_2654/cgroup.procs: No such file or directory 
04-23 23:04:42.600 8148-8148/? D/AndroidRuntime: Shutting down VM 
04-23 23:04:42.608 1543-1560/system_process W/InputMethodManagerService: Got RemoteException sending setActive(false) notification to pid 7395 uid 10058 
04-23 23:04:42.625 2004-8160/com.google.android.googlequicksearchbox:search I/HotwordRecognitionRnr: Starting hotword detection. 
04-23 23:04:42.627 2004-8159/com.google.android.googlequicksearchbox:search I/MicrophoneInputStream: mic_starting [email protected] 
04-23 23:04:42.636 1174-1542/? E/audio_hw_generic: Error opening input stream format 1, channel_mask 0010, sample_rate 16000 
04-23 23:04:42.654 1174-8162/? I/AudioFlinger: AudioFlinger's thread 0xb5d99000 ready to run 
04-23 23:04:42.663 2004-8159/com.google.android.googlequicksearchbox:search I/MicrophoneInputStream: mic_started [email protected] 
04-23 23:04:42.670 2004-2004/com.google.android.googlequicksearchbox:search I/HotwordWorker: onReady 
04-23 23:04:42.750 2285-8164/com.google.android.gms W/IcingInternalCorpora: getNumBytesRead when not calculated. 
04-23 23:04:42.812 2285-2425/com.google.android.gms I/Icing: Usage reports 0 indexed 0 rejected 0 imm upload true 

を主な活動:

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

import com.google.firebase.iid.FirebaseInstanceId; 
import com.google.firebase.iid.FirebaseInstanceIdService; 
import com.google.firebase.messaging.FirebaseMessagingService; 
import com.google.firebase.messaging.RemoteMessage; 

public class MainActivity extends AppCompatActivity { 

    public MainActivity() { 

    } 
    public class MyFirebaseMessagingService extends FirebaseMessagingService { 
     private static final String TAG = "FCM Service"; 
     @Override 
     public void onMessageReceived(RemoteMessage remoteMessage) { 
      // 
      //TODO: Handle FCM messages here. 
      //If the application is in the foreground handle both data and notification messages here. 
      //Also if you intend on generating your own notifications as a result of a received FCM 
      //message, here is where that should be initiated. 
      // 
      Log.d(TAG, "From: " + remoteMessage.getFrom()); 
      Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody()); 
     } 
    } 

    public class FirebaseIDService extends FirebaseInstanceIdService { 
     private static final String TAG = "FirebaseIDService"; 

     @Override 
     public void onTokenRefresh() { 
      // Get updated InstanceID token. 
      String refreshedToken = FirebaseInstanceId.getInstance().getToken(); 
      Log.d(TAG, "Refreshed token: " + refreshedToken); 

      // TODO: Implement this method to send any registration to your app's servers. 
      sendRegistrationToServer(refreshedToken); 
     } 

     /** 
     * Persist token to third-party servers. 
     * 
     * Modify this method to associate the user's FCM InstanceID token with any server-side account 
     * maintained by your application. 
     * 
     * @param token The new token. 
     */ 
     private void sendRegistrationToServer(String token) { 
      // Add custom implementation, as needed. 
     } 
    } 

マニフェスト:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.surfdogdesigns.pandsi"> 
    <uses-permission android:name="android.permission.INTERNET" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:roundIcon="@mipmap/ic_launcher_round" 
     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> 

     <service android:name=".MainActivity$MyFirebaseMessagingService"> 
      <intent-filter> 
       <action android:name="com.google.firebase.MESSAGING_EVENT"/> 
      </intent-filter> 
     </service> 

     <service android:name=".MainActivity$FirebaseIDService"> 
      <intent-filter> 
       <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> 
      </intent-filter> 
     </service> 


    </application> 



</manifest> 

誰かが間違っていることを見ることができますか?それを修正する方法は?

答えて

1

私はそれをテストしていませんが、私はあなたのサービスができないことを疑います内部クラスはMainActivityです。それはサービスを入れ子にすることができるということも可能です

MyFirebaseInstanceIDService

MyFirebaseMessagingService

:それはより安全になり、そしてサンプルプロジェクトで行われるように、非入れ子になったクラスとして宣言するために、必要な場合がありますMainActivityのクラスあなたが静的入れ子になったクラスとしてそれらを宣言した場合:

public static class MyFirebaseMessagingService... 
+0

静的なトリックをしたとして、それらを宣言 - ありがとう! – scb998

1

はあなたが詳細hereを見ることができ、クラス説明についてMyFirebaseMessagingService

public MyFirebaseMessagingService() { 
    super("MyFirebaseMessagingService"); 
} 

に空のコンストラクタを追加する必要が

関連する問題