gpt4 book ai didi

android - 使 flutter 通知(通过firebase)弹出到前台(并且不仅仅是状态栏中的图标)

转载 作者:行者123 更新时间:2023-12-03 13:26:48 46 4
gpt4 key购买 nike

我正在尝试为 flutter 应用程序实现通知。

在 iPhone(左)上,它看起来像预期的那样,通知会显示一小段时间,然后自动隐藏。

但在 Android(右侧,Android 9,摩托罗​​拉)上,它只是在状态栏中显示为一个图标。
enter image description here
我怎样才能让它弹出?现在我必须向下滑动才能看到内容。

通知通过 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;
}
}

我读了所有 documentation但即使具有高优先级,它也不会变得更大。

我想我在 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>

最佳答案

看起来您正在研究如何获得 heads-up notification在安卓上。

我建议使用 FCM's "Data message"然后在您的 FirebaseMessagingService.onMessageReceived 处处理实现,然后按照它解释的优先/重要性在那里播放here .

关于android - 使 flutter 通知(通过firebase)弹出到前台(并且不仅仅是状态栏中的图标),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57849996/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com