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

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

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

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

Android

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

Q&A

解決済

1回答

2223閲覧

AndroidでFCMを使った通知の通知音が鳴らない

hakase

総合スコア107

Firebase

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

Android

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

0グッド

0クリップ

投稿2019/02/19 02:17

こんにちは。
AndroidでFCMを使った通知の通知音が鳴らなくて困っています。

PHP

1$message = CloudMessage::withTarget('token', $deviceToken) 2->withNotification(array('title' => 'My title', 'body' => 'My Body','sound'=>'default')) 3->withData(array('first_key' => 'First Value','second_key' => 'Second Value')); 4$messaging->send($message);

kotlin

1class MyFirebaseMessagingService: FirebaseMessagingService() { 2 private val TAG = "DEBUG-SHOP" 3 4 // 新しいトークンが生成された時の処理 5 override fun onNewToken(p0: String?) { 6 super.onNewToken(p0) 7 Log.d(TAG, "onNewToken token:$p0") 8 // サーバにトークンを送信する処理を書く 9 10 // channelidを設定 11 addChannelId() 12 } 13 14 // レシーバー 15 override fun onMessageReceived(message: RemoteMessage?) { 16 super.onMessageReceived(message) 17 Log.d(TAG, "onMessageReceived token:${message?.data}") 18 // jsonからタイトルと本文を取得 19 val title = message?.data?.get("title").toString() 20 val text = message?.data?.get("body").toString() 21 // 通知エリア表示設定 22 sendNotification(title,text) 23 } 24 25 private fun sendNotification(title: String, text: String) { 26 // 通知エリアから遷移する際のアクティビティを指定 27 val intent = Intent(this, MainActivity::class.java) 28 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) 29 // 一度だけ遷移する 30 val pendingIntent = PendingIntent.getActivity(this,0, intent, PendingIntent.FLAG_ONE_SHOT) 31 32 // 通知メッセージのスタイルを設定(改行表示に対応) 33 val inboxStyle = NotificationCompat.InboxStyle() 34 val messageArray = text.split("\n") 35 for (msg in messageArray) { 36 inboxStyle.addLine(msg) 37 } 38 39 // 通知音を設定 40 val defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION) 41 42 // 通知を作成 43 val notificationBuilder 44 = NotificationCompat.Builder(this,resources.getString(R.string.channel_id)) 45 .setContentTitle(title) 46 .setContentText(text) 47 // ステータスバーに表示されるアイコン 48 .setSmallIcon(R.mipmap.ic_launcher_round) 49 // 通知エリアに表示されるアイコン 50 .setLargeIcon(BitmapFactory.decodeResource(resources,R.mipmap.ic_launcher)) 51 // 上で設定したpendingIntentを設定 52 .setContentIntent(pendingIntent) 53 // メッセージを纏める時に表示するテキスト 54 .setStyle(inboxStyle.setSummaryText("more")) 55 // タップしたら自動で閉じるようにする 56 .setAutoCancel(true) 57 // 優先度を最大 58 .setPriority(PRIORITY_MAX) 59 // 音を出す 60 .setSound(defaultSoundUri) 61 62 63 val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager 64 65 // 通知エリアに複数表示させるためランダムのIDを設定 66 val uuid = UUID.randomUUID().hashCode() 67 notificationManager.notify(uuid, notificationBuilder.build()) 68 69 // Android 8(Oreo)以上はチャンネルを指定 70 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { 71 notificationBuilder.setChannelId(resources.getString(R.string.channel_id)) 72 } 73 } 74 75 //Android 8(Oreo)以上はチャンネルを設定しないと通知エリアに表示されないためchannelidを設定 76 private fun addChannelId() { 77 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { 78 val manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager 79 // ヘッドアップ通知を出す場合はチャンネルの重要度も最大にする 80 val channel = NotificationChannel(resources.getString(R.string.channel_id),resources.getString(R.string.channel_name),NotificationManager.IMPORTANCE_HIGH) 81 82 // ロック画面での表示レベル 83 channel.lockscreenVisibility = Notification.VISIBILITY_PUBLIC 84 // チャンネル登録 85 manager.createNotificationChannel(channel) 86 } 87 } 88}

送信側はFirebaseが提供しているadminSDKではなく、phpのadminSDKを使ってます。
何かお気づきのところがあればアドバイスくださいませ。defaultではなくファイルにしたり、
標準のadminSDKを使ったり、別のAndroid端末を使ったりと変えてみるものはいくつかあるのですが、コードレベルでアドバイスが欲しいです。よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

phpのadminSDKを使ってます

使ったことないですが↓のことですよね。とりあえずその前提で回答します。
https://github.com/kreait/firebase-php

標準のadminSDKを使ったり、別のAndroid端末を使ったりと変えてみるものはいくつかあるのですが、コードレベルでアドバイスが欲しいです。

公式API(adminSDK)で**soundはプラットフォーム固有のパラメータ**で渡してやる必要があります。
お使いのSDKのドキュメントを確認したところ、同様にプラットフォーム固有のパラメータを設定するAPIが用意されているようです。
https://firebase-php.readthedocs.io/en/stable/cloud-messaging.html#id1

次のように設定すればいけると思います。

$config = AndroidConfig::fromArray([ 'notification' => [ 'sound' => 'default' ] ]); $message = $message->withAndroidConfig($config);

上記でうまくいかない場合は、Firebaseでなく非公式のSDKに問題があるので、そちらでIssueを作成してください。

投稿2019/02/19 05:46

xenbeat

総合スコア4258

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

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

hakase

2019/02/19 06:27

ありがとうございますー。試してみますー。しばらくお待ちくださいませー。
hakase

2019/02/19 06:45

鳴りましたー。ありがとうございますー
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問