フラッとプッシュ通知を確実にする | 気分でフラッと…

気分でフラッと…

その日の気分でフラッと何かした時の記録です。

★★★注意事項★★★
記事に関係のある内容でもなく、自分のサイトの宣伝だけするコメントと判断した場合は、
断り無く削除いたしますので御了承ください。

Androidスマホ必須ツールの紹介です

Push Notifications Fixer(NO ROOT)


これは、プッシュ型のリアルタイム着信を確実にするツールです
Google Playで「PNF」で検索してみてください

Androidの内部設定を変更するだけのツールで、常駐はしません
また、NO ROOTと書いてある様に、ルート化は必要ありません

もし、使用しているメールアプリ等でプッシュ通知を有効にしているにもかかわらずリアルタイムに受信しない場合があれば試してみてください
050のIP電話電話アプリ、LINE等のコミュニケーションツールでも有効です

※残念ながらiOS版は無いようです
 他に設定する方法があるようですが、よくわかりません

注意事項ですが
これを使えば全てのアプリがプッシュ通知に代わるわけではありません
元々、プッシュ通知に対応していないアプリは、変化ありません

そして、機種によっては、バッテリーの減りが早くなる場合がありますので、その場合は元の値に戻してください(一番長い設定がAndroid標準の設定です)


さて仕組みについてですが

やってることは単純で、プッシュ通知用のハートビート間隔の時間(モバイル用、Wi-Fi用)を短く設定しているだけです

通常、モバイルであれば28分、Wifiであれば15分の設定を、5分に変更しています

では、ハートビート間隔とは何か?
何故、ハートビート間隔を短くするとリアルタイム着信を確実にできるようになるのか?

この説明はちょっと難しく、以下長文になります

過去のメールの歴史からの説明になります

昔、パソコンのメールはリアルタイム着信しませんでした
普通の郵便と一緒で、自分のポストまでメールが届いたかどうかを見に行かなければならなかったからです
1時間おきにポストを見に行く設定なら1時間ごとでしかメールが届いたか確認できなかったのです

もちろん、見に行く感覚を1秒とかにすれば、ほとんどリアルタイムに受信できるのですが、それでは疲れますね
コンピュータ自体も忙しいし、ネットワーク上の通信量も増えてしまします
スマフォからすれば、来るかどうかわからないものにCPUを使われ、電池を使われ、パケットも使われてしまいます

なので、通常この方法は1時間おき、30分おき、もっと短くても15分おきにする程度でした
この、自分でサーバーへ確認しにいく方式を「フェッチ型」といいます

その後、携帯電話のメールが出現したときに、メールのリアルタイム受信ができるようになりました
郵便で言えば書留と同じで、直接玄関まで届けてくれます
これが「プッシュ型」です

では、何故メールのリアルタイム受信ができるようになったのか?

それは、携帯電話の着信機能と同じ仕組みを使っているからです
電話は、同時にしゃべるのでリアルタイムに着信しなければいけません
その為には、定期的に最寄りの基地局に「近くにいますよ」というのを教えておき、電話がかかってきたら、基地局が大声(実際は電波ですがw)で「xxxさん、電話来たよー」と教えてもらうわけです

ある意味、会社の固定電話みたいなものかな
会社の代表(基地局)にかかってきた電話を転送してもらって受けるみたいな感じ

電話でできるなら、メールも同様の仕組みで「メール来ているからサーバーに取りに来てねー」と言えますね
また、短い電文なら直接送れもします(これがSMSです)

さて、このままだと携帯電話でしかメールがリアルタイムに受信できません
LINEやメッセンジャーなども同様です

そのため、違う仕組みの「プッシュ型」が登場しました

※携帯電話のプッシュ型メール通知と、これから説明するプッシュ型の実際の登場の前後はわかりませんが、携帯電話が普及する以前は、そもそもインターネットへの常時接続はお金がかかる為、なかなか個人ではできなかったのが事実です
 つまり、インターネットへの常時接続が可能になったから、これから説明するプッシュ型も可能になりました

コンピューター同士は、ネット上ではIPアドレスで所在を管理しています
IPアドレスには、LAN内限定のローカルなものと、全世界共通のグローバルなものがあり
インターネット上ではグローバルIPアドレスで管理されています

しかし、グローバルIPアドレスは数に限りがあり、全世界のすべてのネットワーク機器にいきわたるほどの数は用意できません
インターネットにアクセスする時にだけ、一定時間プロバイダがグローバルIPアドレスを割り当ててくれます
これを使って、常にネット接続し、自分のグローバルIPアドレスはこれですよーという情報をサーバーに伝えておけば、サーバーからのプッシュ通知が可能になるわけです

さてそうなると、問題は「常にネット接続する」方法です

プロバイダは通信状態が一定時間無いと切断し、IPアドレスを解放します
これでは、IPアドレスが変わってしまい受信できません

だから、通信が発生していない場合に一定間隔で「生きてますよー」「通信してますよー」って主張するわけです
この一定間隔が「ハートビート間隔」です
※やっとここで、「ハートビート間隔」が何かがわかりましたw

つまり、「フェッチ型」と違い、「プッシュ型」はリアルタイムには受信できますが、やはり定期的にお知らせが必要なのです

そして、「ハートビート間隔」より短い間隔で通信が切断されてしまうことがあると、着信できない現象が発生するのです
これを解消する為に「ハートビート間隔」を短し、確実に着信できるようになるわけです

これが、何故、ハートビート間隔を短くするとリアルタイム着信を確実にできるようになる理由でした

あー長かったwww

更に、LAN上では複数のコンピュータがグローバルIPアドレスを共有しているけど、どうしてリアルタイム着信できるの?
という疑問が発生しますが、その説明はまた今度にします

お疲れ様でした