首先,我已将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)
答案 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项目中。之后,只需按下“强制解决”按钮即可获得成功的操作消息。