E / FirebaseInstanceId:传递消息时出错:找不到ServiceIntent

时间:2019-02-05 09:54:50

标签: android firebase unity3d firebase-cloud-messaging

首先,我已将FirebaseAnalytics添加到我的Android Unity项目中,并且在测试中工作正常。然后,当我添加FirebaseMessaging并构建应用程序并从FireBase面板发送消息时,该消息将不会显示在设备/模拟器上,并且我在Logcat中收到此错误:

  

E / FirebaseInstanceId:无法解决目标意图服务,跳过了类名强制实施

     

1722-4448 / system_process W / ActivityManager:无法启动服务意图{act = com.google.firebase.MESSAGING_EVENT pkg = pack_name(有其他功能)} U = 0:找不到

     

E / FirebaseInstanceId:传递消息时出错:找不到ServiceIntent。

有一个主题here,没有针对该问题的具体答案。

我跟随FireBase walkthrough将FirebaseMessaging.unitypackage添加到我的项目中,并据此将这些行添加到清单中:

<!-- The MessagingUnityPlayerActivity is a class that extends
     UnityPlayerActivity to work around a known issue when receiving
     notification data payloads in the background. -->
 <activity android:name="com.google.firebase.MessagingUnityPlayerActivity" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
   <intent-filter>
     <action android:name="android.intent.action.MAIN" />
     <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
   <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
 </activity>
 <service android:name="com.google.firebase.messaging.MessageForwardingService" android:exported="false" />

PS:

在@jeevashankar答案中添加提及的服务后,我的清单到达时出现此错误:

  

E / BufferQueueProducer:[SurfaceView-pack_name / com.google.firebase.MessagingUnityPlayerActivity#0]查询:BufferQueue已被放弃       [SurfaceView-com.armiksoft.backgammon / com.google.firebase.MessagingUnityPlayerActivity#0]连接:BufferQueue已被放弃   E / BufferQueueProducer:[SurfaceView-pack_name / com.google.firebase.MessagingUnityPlayerActivity#0]

更新: 我在一个空的Unity项目中测试了FirebaseMessaging,并在模拟器/设备上对其进行了测试,直到Android 7.1.1都可以使用。但是在Android 8(API 26)及更高版本中,会出现此错误,并且不会收到消息:

  

system_process E / NotificationService:未找到pkg =,channelId = null,id = 0,tag = campaign_collapse_key_4015583716848879920,opPkg =,callingUid = 10122,userId = 0,incomingUserId = 0,notificationUid = 10122,notification = Notification( channel = null pri = 0 contentView = null振动= null声音= null默认值= 0x0标志= 0x10 color = 0x00000000 vis = PRIVATE)

3 个答案:

答案 0 :(得分:2)

我遇到了同样的问题:

  

E / FirebaseInstanceId:传递消息时出错:找不到ServiceIntent

一段时间后,我通过将服务导出到清单中找到了解决方案

[Oracle][ODBC] Wrong number of parameters.

答案 1 :(得分:1)

选中此link,然后在Android Manifest文件的“服务”内的MESSAGING_EVENT操作中添加意图过滤器。

<service android:name=".app.FireMsgService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

FireMsgService类扩展了FirebaseMessagingService类,并且在onMessageReceived方法内部,您将获得通知消息。

public class FireMsgService extends FirebaseMessagingService {


    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);



            Log.v("Firebase MSG", ""+remoteMessage.getNotification().toString());



    }
  }

答案 2 :(得分:0)

我找到了答案。 您需要导入其中没有PlayServiceResolver文件夹的Analytics&Messaging插件。然后下载最后一个unity-jar-resolver unity package from GitHub,并将其导入到您的Unity项目中。之后,只需按下“强制解决”按钮即可获得成功的操作消息。