FCM と Notification の併用をやめてバックグラウンド受信時にうれしがる

ややこしすぎな気がします。

この記事のタイトルも書いてて意味不明です。

以下のような、FCMにJSONをPOSTしてアプリで受ける場合の話です。


curl https://fcm.googleapis.com/fcm/send -X POST \
--header "Authorization: key=FirebaseConsoleのプロジェクトの設定、クラウドメッセージングのタブにあるサーバーキー" \
--Header "Content-Type: application/json" \
 -d '
 {
   "to":"/topics/all",
   "data":{
     "title":"New Notification!",
     "body":"Test"
   },
   "priority":"high"
 }'

このPOSTするJSONに含まれるデータ構造によって、アプリ側で受信する場合の処理の流れ変わって見通しが悪くなります。

きれいにまとめられています。

Firebase Notificationでアプリの状態による挙動の違いについて - Qiita

アプリがフォアグラウンドにある場合、このServiceのonMessageReceived()が呼び出されることになります。

アプリがバックグラウンドにある場合はこのonMessageReceived()は呼ばれることはなく、システム側で自動的にシステムトレイに通知を表示します。

"data"ブロックはConsoleからも含めることはできます(詳細オプションのカスタムデータで指定できる)。しかし、Consoleでは"notification"ブロックを省略することができません(メッセージ文を入力しないと送信できない)。

送信したメッセージに"data"ブロックがあっても、"notification"ブロックが存在する限り、アプリがバックグラウンドにある状態ではFirebaseMessagingServiceのonMessageReceived()は呼ばれません。

"data"ブロックの内容を受け取れないわけではありません。通知をクリックして起動したActivityのintentに含まれることになります。

"data"ブロックの内容の処理が、フォアグラウンド時に受け取ったときはFirebaseMessagingServiceで、バックグラウンドのときにはActivityでとなってしまって煩雑です。

実際に試してみると、これら書かれてることすごく良く分かります。

結局、この"notification"ブロックの特典としては、

アプリがバックグラウンド状態で受信した場合にのみ、アプリ側の実装なしで通知トレイに入る。

ということだけでしょうか、おおまかですが。

すべてのメッセージ受信時にonMessageReceived()が呼び出されれば、アプリがフォアグラウンドにあるかバックグラウンドにあるかを気にする必要がなくなります。

なるほど。

では、入れ子にしたらいいんじゃないかと。

例えば、


{
  // ...

  "notification": {
    "title" : "News!!",
    "body" : "New Product Release!!"
  },

  "data": {
    "user": "Yamada Taro",
    "age": 20
  },

  // ...
}

を以下のように入れ子にする。


{
  // ...

  "data": {
    "user": "Yamada Taro",
    "age": 20,

    "notification": {
      "title" : "News!!",
      "body" : "New Product Release!!"
    }

  },

  // ...
}

すべてサービスで受けることができます。


class  MyFirebaseMessagingService : FirebaseMessagingService() {

  override fun onMessageReceived(message: RemoteMessage) {

    // ...

    // 2層目以下はStringで送られてくるのでMap化
    message.data["notification"]?.let {
      val notification : Map<String, String> =
        Gson().fromJson(it, object : TypeToken<HashMap<String, String>>() {}.type)
      sendNotification(notification)
    }

  }

  // サンプルを参考に
  private fun sendNotification(notification: Map<String, String>) {
    val intent = Intent(this, MainActivity::class.java)
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)

    val pendingIntent = PendingIntent.getActivity(this, 0, intent,
        PendingIntent.FLAG_ONE_SHOT)

    val channelId = getString(R.string.default_notification_channel_id)
    val defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)
    val notificationBuilder = NotificationCompat.Builder(this, channelId)
        .setSmallIcon(android.R.drawable.ic_notification_overlay)
        .setContentTitle(notification["title"])
        .setContentText(notification["body"])
        .setAutoCancel(true)
        .setSound(defaultSoundUri)
        .setContentIntent(pendingIntent)

    val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

    notificationManager.notify(0, notificationBuilder.build())
  }

quickstart-android/MyFirebaseMessagingService.java at master · firebase/quickstart-android

元々、Firebase てのは、敷居を下げてマーケティングなどに利用を広めようとしてるのかな。


Chrome で SSL証明 を見る方法

変更されています.

以前の証明をみるには

[右上のメニュー]-[Developer Tools]-[Valid Certificate]

これは調べんと分からんわ.

開発者しか見なくてよい, ってこと?

分かりづらいよなあ.


トランプ大統領就任演説 全スクリプト 英語 - 日本語比較

Chief Justice Roberts, President Carter, President Clinton, President Bush, fellow Americans and people of the world – thank you.

ロバーツ最高裁判所長官、カーター元大統領、クリントン元大統領、ブッシュ元大統領、オバマ大統領、そしてアメリカ国民の皆さん、世界の皆さん、ありがとう。

We the citizens of America have now joined a great national effort to rebuild our county and restore its promise for all our people.

私たちアメリカ国民はきょう、アメリカを再建し、国民のための約束を守るための、国家的な努力に加わりました。

Together we will determine the course of America for many, many years to come.

私たちはともに、アメリカと世界が今後数年間進む道を決めます。

Together we will face challenges. We will confront hardships. But we will get the job done.

私たちは課題や困難に直面するでしょう。しかし、私たちはやり遂げます。

Every four years we gather on these steps to carry out the orderly and peaceful transfer of power.

私たちは4年ごとに、秩序だち、平和的な政権移行のために集結します。

And we are grateful to President Obama and First Lady Michelle Obama for their gracious aid throughout this transition. They have been magnificent, thank you.

私たちは政権移行中の、オバマ大統領、そしてファーストレディーのミシェル夫人からの寛大な支援に感謝します。彼らは本当にすばらしかったです。

Today’s ceremony, however, has very special meaning because today we are not merely transferring power from one administration to another – but transferring it from Washington DC and giving it back to you the people.

しかし、きょうの就任式はとても特別な意味を持ちます。なぜなら、きょう、私たちは単に、1つの政権から次の政権に、あるいは、1つの政党から別の政党に移行するだけでなく、権限を首都ワシントンの政治からアメリカ国民に返すからです。

For too long a small group in our nation’s capital has reaped the rewards of government while the people have borne the cost.

あまりにも長い間、ワシントンの小さなグループが政府の恩恵にあずかる一方で、アメリカ国民が代償を払ってきました。

Washington flourished but the people did not share in its wealth. Politicians prospered but the jobs left and the factories closed.

ワシントンは栄えてきましたが、人々はその富を共有していません。政治家は繁栄してきましたが、仕事はなくなり、工場は閉鎖されてきました。

The establishment protected itself but not the citizens of our country.

既存の勢力は自分たちを守ってきましたが、国民のことは守ってきませんでした。

Their victories have not been your victories. Their triumphs have not been your triumphs. While they have celebrated there has been little to celebrate for struggling families all across our land.

彼らの勝利は皆さんの勝利ではありませんでした。彼らが首都で祝っている一方で、闘っている国中の家族たちを祝うことはほとんどありませんでした。

That all changes starting right here and right now because this moment is your moment. It belongs to you. It belongs to everyone gathered here today and everyone watching all across America today.

彼らが首都で祝っている一方で、闘っている国中の家族たちを祝うことはほとんどありませんでした。すべてが変わります。いま、ここから始まります。なぜなら、この瞬間は皆さんの瞬間だからです。皆さんのものだからです。ここに集まっている皆さんの、そして、アメリカ国内で演説を見ている皆さんのものだからです。

This is your day.

きょうという日は、皆さんの日です。

This is your celebration.

皆さんへのお祝いです。

And this – the United States of America – is your country.

そして、このアメリカ合衆国は、皆さんの国なのです。

What truly matters is not what party controls our government but that this government is controlled by the people.

本当に大切なことは、どちらの政党が政権を握るかではなく、私たちの政府が国民によって統治されているかどうかということなのです。

Today, January 20 2017, will be remembered as the day the people became the rulers of this nation again.

2017年1月20日は、国民が再び国の統治者になった日として記憶されるでしょう。

The forgotten men and women of our country will be forgotten no longer. Everyone is listening to you now.

忘れられていた国民は、もう忘れられることはありません。皆があなたたちの声を聞いています。

You came by the tens of millions to become part of a historic movement – the likes of which the world has never seen before.

世界がこれまで見たことのない歴史的な運動の一部を担う、数百万もの瞬間に出会うでしょう。

At the centre of this movement is a crucial conviction – that a nation exists to serve its citizens.

この運動の中心には、重要な信念があります。それは、国は国民のために奉仕するというものです。

Americans want great schools for their children, safe neighbourhoods for their families and good jobs for themselves.

アメリカ国民は、子どもたちのためにすばらしい学校を、家族のために安全な地域を、そして自分たちのためによい仕事を望んでいます。

These are just and reasonable demands of righteous people and a righteous public. But for too many of our citizens, a different reality exists.

これらは、高潔な皆さんが持つ、当然の要求です。しかし、あまりにも多くの国民が、違う現実に直面しています。

Mothers and children trapped in poverty in our inner cities, rusted out factories scattered like tombstones across the landscape of our nation.

母親と子どもたちは貧困にあえぎ、国中に、さびついた工場が墓石のように散らばっています。

An education system flushed with cash, but which leaves our young and beautiful students deprived of all knowledge. And the crime and the gangs and the drugs which deprive people of so much unrealised potential.

教育は金がかかり、若く輝かしい生徒たちは知識を得られていません。そして犯罪やギャング、薬物があまりに多くの命を奪い、可能性を奪っています。

This American carnage stops right here and stops right now.

このアメリカの殺りくは、いま、ここで、終わります。

We are one nation, and their pain is our pain, their dreams are our dreams, we share one nation, one home and one glorious destiny.

私たちは1つの国であり、彼らの苦痛は私たちの苦痛です。彼らの夢は私たちの夢です。そして、彼らの成功は私たちの成功です。私たちは、1つの心、1つの故郷、そしてひとつの輝かしい運命を共有しています。

Today I take an oath of allegiance to all Americans. For many decades, we’ve enriched foreign industry at the expense of American industry, subsidised the armies of other countries, while allowing the sad depletion of our own military.

きょうの私の宣誓は、すべてのアメリカ国民に対する忠誠の宣誓です。何十年もの間、私たちは、アメリカの産業を犠牲にして、外国の産業を豊かにしてきました。

We've defended other nations’ borders while refusing to defend our own.

ほかの国の軍隊を支援する一方で、非常に悲しいことに、われわれの軍を犠牲にしました。

And spent trillions and trillions of dollars overseas while America’s infrastructure has fallen into disrepair and decay.

そして、何兆ドルも海外で使う一方で、アメリカの産業は荒廃し衰退してきました。

We have made other countries rich while the wealth, strength and confidence of our country has dissipated over the horizon.

私たちが他の国を豊かにする一方で、われわれの国の富と強さ、そして自信は地平線のかなたに消えていきました。

One by one, shutters have closed on our factories without even a thought about the millions and millions of those who have been left behind.

取り残される何百万人ものアメリカの労働者のことを考えもせず、1つまた1つと、工場は閉鎖し、この国をあとにしていきました。

The wealth of our middle class has been ripped from their homes and then redistributed all across the world.

中間層の富は、彼らの家庭から奪われ、世界中で再分配されてきました。

But that is the past and now we are looking only to the future.

しかし、それは過去のことです。いま、私たちは未来だけに目を向けています。

We assembled here today are issuing a new decree to be heard in every city, in every foreign capital, in every hall of power – from this day on a new vision will govern our land – from this day onwards it is only going to be America first – America first!

きょうここに集まった私たちは、新たな命令を発します。すべての都市、すべての外国の首都、そして権力が集まるすべての場所で、知られることになるでしょう。この日以降、新たなビジョンがわれわれの国を統治するでしょう。この瞬間から、アメリカ第一となります。

Every decision on trade, on taxes, on immigration, on foreign affairs will be made to benefit American workers and American families.

貿易、税、移民、外交問題に関するすべての決断は、アメリカの労働者とアメリカの家族を利するために下されます。

Protection will lead to great prosperity and strength. I will fight for you with every bone in my body and I will never ever let you down.

ほかの国々が、われわれの製品を作り、われわれの企業を奪い取り、われわれの雇用を破壊するという略奪から、われわれの国を守らなければなりません。わたしは全力で皆さんのために戦います。何があっても皆さんを失望させません。

America will start winning again. America will start winning like never before.

アメリカは再び勝ち始めるでしょう、かつて無いほど勝つでしょう。

We will bring back our jobs, we will bring back our borders, we will bring back our wealth, we will bring back our dreams.

私たちは雇用を取り戻します。私たちは国境を取り戻します。私たちは富を取り戻します。そして、私たちの夢を取り戻します。

We will bring new roads and high roads and bridges and tunnels and railways all across our wonderful nation.

私たちは、新しい道、高速道路、橋、空港、トンネル、そして鉄道を、このすばらしい国の至る所につくるでしょう。

We will get our people off welfare and back to work – rebuilding our country with American hands and American labour.

私たちは、人々を生活保護から切り離し、再び仕事につかせるでしょう。アメリカ人の手によって、アメリカの労働者によって、われわれの国を再建します。

We will follow two simple rules – buy American and hire American.

私たちは2つの簡単なルールを守ります。アメリカのものを買い、アメリカ人を雇用します。

We will seek friendship and goodwill with the nations of the world, but we do so with the understanding that it is the right of all nations to put their nations first.

私たちは、世界の国々に、友情と親善を求めるでしょう。しかし、そうしながらも、すべての国々に、自分たちの利益を最優先にする権利があることを理解しています。

We do not seek to impose our way of life on anyone, but rather to let it shine as an example. We will shine for everyone to follow.

私たちは、自分の生き方を他の人たちに押しつけるのではなく、自分たちの生き方が輝くことによって、他の人たちの手本となるようにします。

We will reinforce old alliances and form new ones, and untie the world against radical Islamic terrorism which we will eradicate from the face of the earth.

私たちは古い同盟関係を強化し、新たな同盟を作ります。そして、文明社会を結束させ、イスラム過激主義を地球から完全に根絶します。

At the bed rock of our politics will be an allegiance to the United States.

私たちの政治の根本にあるのは、アメリカに対する完全な忠誠心です。

And we will discover new allegiance to each other. There is no room for prejudice.

そして、国への忠誠心を通して、私たちはお互いに対する誠実さを再発見することになります。もし愛国心に心を開けば、偏見が生まれる余地はありません。

The bible tells us how good and pleasant it is when god’s people live together in unity.

聖書は「神の民が団結して生きていることができたら、どれほどすばらしいことでしょうか」と私たちに伝えています。

We must speak our minds openly, debate our disagreements honestly, but always pursue solidarity.

私たちは心を開いて語り合い、意見が合わないことについては率直に議論をし、しかし、常に団結することを追い求めなければなりません。

When America is united, America is totally unstoppable.

アメリカが団結すれば、誰も、アメリカが前に進むことを止めることはできないでしょう。

There is no fear, we are protected and will always be protected by the great men and women of our military and most importantly we will be protected by god.

そこにおそれがあってはなりません。私たちは守られ、そして守られ続けます。私たちは、すばらしい軍隊、そして、法の執行機関で働くすばらしい男性、女性に、守られています。そして最も大切なことですが、私たちは神によって守られています。

Finally, we must think big and dream even bigger. As Americans, we know we live as a nation only when it is striving.

最後に、私たちは大きく考え、大きな夢を見るべきです。アメリカの人々は、努力をしているからこそ、国が存在し続けていけるということを理解しています。

We will no longer accept politicians who are always complaining but never doing anything about it.

私たちは、話すだけで常に不満を述べ、行動を起こさず、問題に対応しようとしない政治家を受け入れる余地はありません。

The time for empty talk is over, now arrives the hour of action.

空虚な話をする時間は終わりました。行動を起こすときが来たのです。

Do not allow anyone to tell you it cannot be done. No challenge can match the heart and fight and spirit of America. We will not fail, our country will thrive and prosper again.

できないことを話すのはもうやめましょう。アメリカの心、闘争心、魂を打ち負かすような課題は、存在しません。私たちが失敗することはありません。私たちは再び栄え、繁栄するでしょう。

We stand at the birth of a new millennium, ready to unlock the mysteries of space, to free the earth from the miseries of disease, to harvest the energies, industries and technologies of tomorrow.

私たちはこの新世紀のはじめに、宇宙の謎を解き明かし、地球を病から解放し、明日のエネルギーや産業、そして技術を、利用しようとしています。

A new national pride will stir ourselves, lift our sights and heal our divisions. It’s time to remember that old wisdom our soldiers will never forget, that whether we are black or brown or white, we all bleed the same red blood of patriots.

新しい国の誇りは私たちの魂を呼び覚まし、新しい視野を与え、分断を癒やすことになるでしょう。私たちの兵士が決して忘れなかった、古くからの知恵を思い起こすときです。それは私たちが黒い肌であろうと、褐色の肌であろうと、白い肌であろうと、私たちは同じ愛国者の赤い血が流れています。

We all enjoy the same glorious freedoms and we all salute the same great American flag and whether a child is born in the urban sprawl of Detroit or the windswept plains of Nebraska, they look at the same night sky, and dream the same dreams, and they are infused with the breath by the same almighty creator.

私たちは皆同じ輝かしい自由を享受しており、私たちは皆同じ偉大なアメリカの旗に敬服します。そしてデトロイトの郊外で生まれた子どもたちも、風に吹きさらされたネブラスカで生まれた子どもたちも、同じ夜空を見て、同じ夢で心を満たし、同じ全知全能の創造者によって命を与えられています。

So to all Americans in every city near and far, small and large, from mountain to mountain, from ocean to ocean – hear these words – you will never be ignored again.

だからこそアメリカ人の皆さん、近い街にいる人も、遠い街にいる人も、小さな村にいる人も、大きな村にいる人も、山から山へ、海から海へと、この言葉を伝えます。あなたたちは二度と無視されることはありません。

Your voice, your hopes and dreams will define your American destiny.

あなたの声、希望、夢はアメリカの運命を決定づけます。

Your courage, goodness and love will forever guide us along the way.

そしてあなたの勇気、善良さ、愛は私たちの歩む道を導きます。

Together we will make America strong again, we will make America wealthy again, we will make America safe again and yes – together we will make America great again.

ともに、私たちはアメリカを再び強くします。私たちはアメリカを再び豊かにします。私たちはアメリカを再び誇り高い国にします。私たちはアメリカを再び安全な国にします。そして、ともに、私たちはアメリカを再び偉大にします。

Thank you.

ありがとうございます。

God bless you.

神の祝福が皆様にありますように。

And god bless America.

神がアメリカを祝福しますように。

【英語力】あなたは「Apple ティム・クック CEO の社員に向けたメッセージ」が理解できますか

Donald Trump inauguration speech: Read the full transcript | The Independent

Donald Trump’s full inauguration speech transcript, annotated - The Washington Post

トランプ大統領就任演説 日本語訳全文 | NHKニュース