unity3d Unity firebase通知自定义映像

liwlm1x9  于 2023-01-21  发布在  其他
关注(0)|答案(4)|浏览(155)

我已经决定在我的Unity项目中实现Firebase通知。问题是,对于通知,我希望使用自定义图像,但该图像也用作应用程序图像(app_icon)。我尝试修改清单,其中我将自定义通知图像(notificon)放入MessagingUnityPlayerActivity活动中以显示通知图标。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="${applicationId}"
          android:versionCode="1"
          android:versionName="1.0">
  <application android:label="@string/app_name"
               android:icon="@drawable/app_icon">
    <!-- 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:label="@string/app_name"
              android:icon="@drawable/notificon"
              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"/>
  </application>

</manifest>

我试着修改它并删除一些标签,但是编译失败了。我还应该提一下,我的项目中有多个清单,我试着将它们合并在一起,但是没有成功。但是这应该不是问题,因为这是唯一一个具有android:icon属性的清单。
谢谢

eanckbw9

eanckbw91#

1.在文件夹“Assets\Plugins\Android\res\drawable”下创建一个图像(游戏图标的透明版本,png上的白色)。
1.在我的例子中,我的图像的名称是“small_icon. png”,然后在“Assets\Plugins\Android\AndroidManifest.xml”中,将其添加到开始标记之后:
<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/small_icon" />
您的AndroidManifest.xml应该如下所示

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
 xmlns:tools="http://schemas.android.com/tools" package="${applicationId}" 
android:versionCode="1" android:versionName="1.0">
  <application android:label="@string/app_name" android:icon="@drawable/app_icon">

<meta-data
        android:name="com.google.firebase.messaging.default_notification_icon"
        android:resource="@drawable/small_icon" />
<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>
....
798qvoo8

798qvoo82#

使用AAB将res文件夹放在Assets/Plugins/Android中是过时的,并且将阻止您构建。
由于我懒得安装Android Studio来构建自定义AAR,所以我通过将一个ZIP存档文件放入Assets/Plugins/Android文件夹来解决这个问题,其中包含res文件夹(如另一个答案中所述,使用此文件夹创建res文件夹)和res文件夹旁边的AndroidManifest.xml中的以下代码片段:

<?xml version="1.0" encoding="utf-8"?>
<manifest 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
package="com.google.firebase.messaging" 
android:versionCode="1" 
android:versionName="1.0">
<application>
<meta-data
        android:name="com.google.firebase.messaging.default_notification_icon"
        android:resource="@drawable/YOURICONIMAGENAMEWITHOUTEXTENSION" />
        </application>
</manifest>

然后在资源管理器中将ZIP文件扩展名更改为AAR。然后您可以从发送端指定图标名称。AAR解剖here的更多详细信息。

l0oc07j2

l0oc07j23#

不需要更改乘客名单。这对我很有效:
因此,您应该能够将图标添加到Assets/Plugins/Android/res/drawable/并引用其名称
然后在通知json中指定自己的图标,例如:

"notification": {
        "title": "Title",
        "body" : "First Notification",
        "text" : "Text",
        "icon" : "MyIcon"
    }

注意:我使用了其中一个图标。

jk9hmnmh

jk9hmnmh4#

然后在资源管理器中将ZIP文件扩展名更改为AAR。然后您可以从发送端指定图标名称。AAR解剖here的更多详细信息。
如果你只是将扩展名改为aar,它将无法编译。

FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':unityLibrary:compileReleaseJavaWithJavac'.
> Could not resolve all files for configuration ':unityLibrary:releaseCompileClasspath'.
   > Failed to transform firebase_notification_icon-.aar (:firebase_notification_icon:) to match attributes {artifactType=android-classes-jar, org.gradle.status=integration, org.gradle.usage=java-api}.
      > Execution failed for AarToClassTransform: C:\...\.gradle\caches\transforms-2\files-2.1\ea6ac2b3d0993f0958d52cbbdfbd76ea\jetified-firebase_notification_icon.aar.
         > entry

必须在Android Studio中创建AAR文件,因为它必须包含许多必需的文件,如AndroidManifest.xml、classes.jar等。

相关问题