質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

2435閲覧

アンドロイドアプリ開発[java] Firebaseからプッシュ通知を行いたいが、しっかりとヘッドアップ通知が出来ない(ステータスバーや通知領域には通知は行っている)。

gugupoo

総合スコア31

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2020/05/27 00:44

androidアプリ作成をして、firebaseを使い端末にプッシュ通知で通知を送りたいと思っています。
Android Studioを使い、javaで作成をしています。
firebaseは一応うまく設定できたと思います。

一通りコードを書き終えて、実機の端末やエミュレーターのステータスバーには
表示されて通知は行っているのですが、
いわゆる私が思っていた通知という、スマートフォンにポップアップで
スマートフォン上部のあたりに通知される(ヘッドアップ通知)というと勉強したのですが、
ヘッドアップ通知が行えない状態です。
一応ステータスバーに通知は行っており、
firebaseの送信結果を見ても送れているという回数の結果も出ているので
なんとかいわゆるヘッドアップの(私が思う普通の)通知を行いたいと思っています。

複数サイトで調べて、やってみたことは
notificationの色々を探り
通知のチャンネルの重要度や優先度がある事を知り、
IMPORTANCE_HIGHや古いアンドロイドバージョンに対しては.setPriority(Notification.PRIORITY_HIGH)
と記載することで重要度が高く、ヘッドアップ通知が行われていくであろうと読み、
またバイブや音を鳴らす通知を行うと、
それもヘッドアップ通知につながると読みまして、
実際のアプリでそう設定するかは別で、とりあえずヘッドアップをまずはやるために
音も鳴らしてみたり、IMPORTANCE_HIGHなどを出来るだけやってみましたが、
ヘッドアップはない状態です。

Android.Manifest.xml

java

1<?xml version="1.0" encoding="utf-8"?> 2<manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.example.testbutton"> 4 5 <uses-permission android:name="android.permission.INTERNET" /> 6 <uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT"/> 7 8 9 <application 10 android:allowBackup="true" 11 android:icon="@mipmap/ic_launcher" 12 android:label="@string/app_name" 13 android:roundIcon="@mipmap/ic_launcher_round" 14 android:supportsRtl="true" 15 android:theme="@style/AppTheme"> 16 17 <activity android:name=".MainActivity"> 18 <intent-filter> 19 <action android:name="android.intent.action.MAIN" /> 20 21 <category android:name="android.intent.category.LAUNCHER" /> 22 </intent-filter> 23 </activity> 24 25 26 <service 27 android:name=".MyFirebaseMessagingService" 28 android:exported="false"> 29 <intent-filter> 30 <action android:name="com.google.firebase.MESSAGING_EVENT" /> 31 </intent-filter> 32 </service> 33 34 35 36 </application> 37 38 39 <meta-data 40 android:name="com.google.firebase.messaging.default_notification_channel_id" 41 android:value="MyNotification"/> 42 43 <meta-data 44 android:name="com.google.firebase.messaging.default_notification_icon" 45 android:resource="@drawable/ic_stat_ic_notification" /> 46 47 <meta-data 48 android:name="com.google.firebase.messaging.default_notification_color" 49 android:resource="@color/background" /> 50</manifest>

MyFirebaseMessagingService.java

java

1package com.example.testbutton; 2 3import android.app.Notification; 4import android.app.NotificationChannel; 5import android.app.NotificationManager; 6import android.app.PendingIntent; 7import android.content.Context; 8import android.content.Intent; 9import android.graphics.Color; 10import android.os.Build; 11import android.util.Log; 12 13import androidx.core.app.NotificationCompat; 14import androidx.core.app.NotificationManagerCompat; 15 16import com.example.testbutton.R; 17import com.google.firebase.messaging.FirebaseMessagingService; 18import com.google.firebase.messaging.RemoteMessage; 19 20import java.util.Map; 21 22 23public class MyFirebaseMessagingService extends FirebaseMessagingService { 24 25 private static final String TAG = "【Firebaseテスト中】"; 26 27 @Override 28 public void onMessageReceived(RemoteMessage remoteMessage) { 29 30 // 31 Log.d(TAG, "From: " + remoteMessage.getFrom()); 32 33 // Check if message contains a data payload. 34 if (remoteMessage.getData().size() > 0) { 35 Log.d(TAG, "Message data payload: " + remoteMessage.getData()); 36 37 if (/* Check if data needs to be processed by long running job */ true) { 38 // For long-running tasks (10 seconds or more) use WorkManager. 39 //scheduleJob(); 40 } else { 41 // Handle message within 10 seconds 42 // handleNow(); 43 } 44 45 } 46 47 // Check if message contains a notification payload. 48 if (remoteMessage.getNotification() != null) { 49 Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody()); 50 } 51 52 53 } 54 55 56 private void notice() 57 { 58 final String CHANNEL_ID = "MyNotification"; 59 final int ID = 0; 60 61 62 NotificationCompat.Builder mBuilder; 63 64 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { 65 NotificationChannel channel = new NotificationChannel(CHANNEL_ID,"MyNotification", NotificationManager.IMPORTANCE_HIGH); 66 channel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC); 67 channel.enableVibration(true); 68 69 NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); 70 manager.createNotificationChannel(channel); 71 mBuilder = new NotificationCompat.Builder(this, "default"); 72 }else{ 73 mBuilder = new NotificationCompat.Builder(this); 74 } 75 76 77 mBuilder.setSmallIcon(R.drawable.ic_stat_name) 78 .setContentTitle("ApduService") 79 .setContentText("processCommandApdu") 80 .setColor(Color.rgb(0,255,0)) 81 .setDefaults(Notification.DEFAULT_VIBRATE) 82 .setAutoCancel(true) 83 .setWhen(System.currentTimeMillis()) 84 .setPriority(Notification.PRIORITY_HIGH) 85 .setVibrate(new long[]{100, 0, 100, 0, 100, 0}); 86 87 NotificationManagerCompat manager = NotificationManagerCompat.from(this); 88 manager.notify(ID, mBuilder.build()); 89 } 90 91 92 93} 94

実機とエミュレーターどちらでも試しているので、実機が古いということはないと思われる点と
そもそも自分は (通知=あの画面前面に出てくる通知) と思っていたので、
ヘッドアップ通知という用語すら知らなかったのですが、
しっかりとヘッドアップ通知を行うにあたり、どこか自分がミスをしていると思いますので、
なんとかご指導いただけたらと思います・・ 宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

このポップアップはどうも難しい様子をネットで調べたり、公式サイトにもほぼ同様な事が書いてあったと思います。諦めるという事になりますが、自己解決となりました。

投稿2020/06/28 14:15

gugupoo

総合スコア31

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問