Seb*_*ian 10 android flutter firebase-cloud-messaging firebase-notifications
我正在尝试为 Flutter 应用程序实现通知。
在 iPhone(左)上,它看起来像预期的一样,通知会显示很短的时间,然后自动隐藏。
但是在 Android(右侧,Android 9,motorola)上,它在状态栏中显示为一个图标。
我怎样才能让它弹出?现在我必须向下滑动它才能看到内容。
通知是通过 Firebase 和他们的PHP-Sdk 发送的。
$serviceAccount = ServiceAccount::fromJsonFile('....');
$firebase = (new Factory)
->withServiceAccount($serviceAccount);
$messaging = $firebase->createMessaging();
$title = 'Test Titel '.date('YmdHis');
$body = 'Meine Nachricht '.date('YmdHis');
$colkey = 'newmessagtenoti';
$count = 23;
$message = new RawMessageFromArray([
'notification' => [
// https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages#notification
'title' => $title,
'body' => $body,
],
'data' => [
'key_1' => 'Value 1',
'key_2' => 'Value 2',
],
'android' => [
// https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages#androidconfig
'ttl' => '3600s',
'priority' => 'high',
"collapse_key"=> $colkey,
'notification' => [
'notification_priority' => 'PRIORITY_MAX',
'visibility' => 'PUBLIC',
'title' => $title,
'body' => $body,
'notification_count' => $count,
],
],
'apns' => [
// https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages#apnsconfig
'headers' => [
'apns-priority' => '10',
],
'payload' => [
'aps' => [
'alert' => [
'title' => $title,
'body' => $body,
],
'badge' => $count,
'apns-collapse-id' => $colkey,
],
],
],
]);
// $firebase->getMessaging()->send($message);
$report = $messaging->sendMulticast($message, $deviceTokens);
echo 'Successful sends: '.$report->successes()->count().PHP_EOL;
echo 'Failed sends: '.$report->failures()->count().PHP_EOL;
if ($report->hasFailures()) {
foreach ($report->failures()->getItems() as $failure) {
echo $failure->error()->getMessage().PHP_EOL;
}
}
Run Code Online (Sandbox Code Playgroud)
我阅读了所有文档,但即使具有高优先级,它也不会变大。
我想我在 Android 的代码中遗漏了一些东西。也许在“AndroidManifest.xml”中?
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.flut7_push">
<!-- io.flutter.app.FlutterApplication is an android.app.Application that
calls FlutterMain.startInitialization(this); in its onCreate method.
In most cases you can leave this as-is, but you if you want to provide
additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here. -->
<application
android:name="io.flutter.app.FlutterApplication"
android:label="flut7_push"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- This keeps the window background of the activity showing
until Flutter renders its first frame. It can be removed if
there is no splash screen (such as the default splash screen
defined in @style/LaunchTheme). -->
<meta-data
android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
android:value="true" />
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="FLUTTER_NOTIFICATION_CLICK" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
看起来您正在研究如何在 Android 上获取平视通知。
我建议使用FCM 的“数据消息”,然后在您的FirebaseMessagingService.onMessageReceived实现中处理它,然后按照此处解释的优先级/重要性进行处理。
| 归档时间: |
|
| 查看次数: |
1683 次 |
| 最近记录: |