2018年8月6日月曜日

P20 Lite とソフトフォンのスリープ中の着信性検証

P20 Lite  [EMUI 8.0.0.142 (C635)] にインストールしたソフトフォンでのスリープ中の不着信問題は一応解消した模様なので、整理してみたいと思います。

不着信問題は、スリープ中にネットが切れそのためにソフトフォンが Registration Failedに陥ったのが原因と考えています。

Google Play開発者サービスが 12.6.8 → 12.8.74 にアップデートされてネット切れがなくなり、解消したのではないかと考えています。


最近アップデートされたソフトフォンアプリも、アップデートされていないアプリも不着信問題が解消しましたので、Google Play開発者サービスの問題だったと考えるのが妥当に思います。


EMUI 8.0.0.142(C635)へのセキュリティアップデートもありましたが、不着信問題はこのファームウェアへのアップデートとは関係がないように思います。




Google Play開発者サービスの最新バージョンへの更新後に、ディープスリープ中(Deep Doze)の着信検証を下記ソフトフォンで実施してみました。

いずれも Deep Doze 中の着信確認を5回以上、うち1回以上は数時間以上のロングスリープでの検証です。

検証は WiFi での検証になっています。
4G は元々、WiFi で OK ならば問題ありませんでしたので、改めて4G で検証はしていません。



各アプリは 2018-08-06 現在、Google Play からダウンロードできる最新版です。

   GS Wave(1.0.3.10/2018-05-02)… 着信します
          Zoiper(2.5.32/2018-08-09)… 着信します
           050Free(2.0/2018-07-01)…  着信します
      SMARTalk(1.4.3/2016-03-14)… 着信します
         050Plus(6.1.7/2018-07-01)… 着信します
 AGEphone(1.8.000/2018-07-19)… スリープ時に不着信(※)
    Mizudroid(2.6.51/2018-07-31)… 着信します


(※)AGEphone はフォアグラウンドでないと着信しません。
   画面を戻せないので、発信専用でしか使えません。


CSipSimple は 2014 年の更新を最後に更新が止まっていますので検証から除外しました(1回だけ Deep Doze 中の着信性をみましたが問題なく着信しましたので、おそらくは大丈夫と思われます)。


Acrobits は有料アプリなので外しています。

Cloud Softphone は 050Free のベースになっていますのでおそらく問題はないと思われ、その有料版が Acrobits ですからこれも問題ないと思われます(未検証ですので、あしからず)。



無料アプリでは GS Wave / Zoiper / Mizudroid あたりが使えるレベルだろうと思います。


Mizudroid は今回の一連の P20 Lite の不着信問題の過程で検証してきましたが、シングルアカウントならば十分に使えます。

マルチアカウントはまだバグがあります。


マルチアカウント可能で主アカウント以外でもアクティブにでき、いずれも着信するのは GS Wave と Zoiper くらいですが、Zoiper はマルチアカウント機能は有料になりました。


「匿名」の方から「050Free(Cloud Softphone)がマルチアカウントに対応している」とのご指摘をいただき、検証しました。

確かにマルチアカウントに対応しており、ブラステルのみならず FUSION IP-Phone Smart のアカウントも登録できました。

メインアカウント以外も着信します。

「匿名」の方から記述いただいた『アカウントの追加方法は、一つ目のアカウントを登録後に設定に入り「アカウントの設定」の画面でWiFiかモバイルデータどちらかのコーデックを選択します。
コーデックの画面の右上にあるチェックマークをタップすると、アカウントの追加ができます。』のとおりです。



したがって現時点でマルチアカウントに対応して無料なのは GS Wave と 050Free のみ、ということになります。





ほかにもあるかも知れませんが、すべてのソフトフォンの検証はできかねますのでゴメンナサイ。









23 件のコメント:

  1. 初めまして。
    050FreeとCloudSoftphoneの最新版(UI刷新後)では、マルチアカウントで使えます。
    設定の中にメニューが用意されていませんので、もしかしたらバグかもしれませんが、現時点では複数アカウントを登録しておけば発信時に切り替えができます。
    また、どちらのアカウントにも問題なく着信できました。

    ブラステル以外のアカウントも登録できそうな雰囲気なのですが、自分はブラステル以外のアカウントを持っていませんので試せていません。

    アカウントの追加方法は、一つ目のアカウントを登録後に設定に入り「アカウントの設定」の画面でWiFiかモバイルデータどちらかのコーデックを選択します。
    コーデックの画面の右上にあるチェックマークをタップすると、アカウントの追加ができます。
    ぜひ試してみてください。

    返信削除
    返信
    1. こんにちは。

      CloudSoftphone に関する情報をありがとうございます。
      最新版ではマルチアカウント機能があるそうで、しかも少し変わった方法での設定のようですね。

      普段使いは GS Wave なので 050Free アプリで使うことはないのですが、検証してみたいと思います。

      削除
    2. こんにちわ。

      FUSIONでの検証ありがとうございます。
      ブラステル以外でも登録できるか気になっていましたのでスッキリしました。

      自分も今までいろいろなSIPフォンを試してみたのですが、結局は残高が表示できる050Freeに戻りました。

      今までは、マルチアカウント対応で残高表示ができるのは、有料のAcrobitsしかなかったと思いますので、無料で使う為に050FreeとCloudSoftphoneの両方をインストールしていましたが、今回のアップデートで1つのアプリで済むようになりました。

      削除
    3. 匿名さん、こんにちは。

      050Free も少し進化したのですね。

      残高表示は便利といえば便利なんですけど、ブラステル以外への通話時に「◯◯分ご利用いただけます。・・・」というのが気に入らなくてなくして欲しい、と何度かブラステルにお願いしているのですが、一向になくなりません。
      ほかに留守電がないなど、いくつか不満はありますが、冒頭のメッセージだけは許せないレベルです。
      昔は 050plus などもこういうアナウンスをしていましたが、いまやブラステルのみ(?)です。

      この点だけが最大の不満です。

      留守電はまぁそのうちに対応するだろう、くらいに考えていて Asterisk もありますから留守電は自前で構成できるようにはしてあるのですが、いまは使っていません。

      削除
  2. バイク野郎様

    初めまして。
    9月初頭にスマホ変更後、SMARTalk の着信ができず悪戦苦闘してまして、解決策を探っているなかでバイク野郎さ

    んのページに辿り着きました。
    専門的な知識はないのですが、どうぞよろしくお願いいたします。

    機種は HUAWEI nova lite 2 です。
    EMUI [8.0.0.135 (C635)] で、Google Play開発者サービス [13.2.80] になっています。

    定番の「スリープ状態になると SMARTalk のプッシュ着信ができない」という問題で悩んでおります。

    ネット上によくある解決策、
    ◆ バッテリー最適化を無視 → SMARTalk → 許可
    ◆ 起動 → SMARTalk → 手動で管理
    ◆ 省エネ系モードのオフ
    をやってみても効果はありませんでした。

    バイク野郎さんの8月6日の書き込みを拝見していると SMARTalk がスムーズに着信しているとのこと。
    また7月17日の【追記②】では上記の設定を「許可しない」「自動で管理」のままでも SMARTalk が
    着信できるとのことでしたので、こちらを参考に改めてアプリをダウンロードして【追記②】と
    同じ設定でやってみたのですが、やっぱりダメでした。

    機種は違いますが、EMUI や Google Play開発者サービスも最新版のようですし、
    バイク野郎さんと同じような環境なのではないかと思うのですが、うまくいきません。

    バイク野郎さんはこの他にどのような設定をされているのでしょうか。
    SMARTalk のアプリ側の設定とか、スマホ本体の設定とか、
    もしなにかヒントになるようなことがあれば是非ご教授いただければと思いご連絡させて頂きました。

    今までのスマホは Android 4.4.2 で、なにもしなくても問題なくプッシュ通知できていたので
    機種を新しくしてこんなことになるとは思ってもいませんでした。
    まさか新型が旧型より不便になるなんて。
    今回の件で初めて「Doze」なんて言葉があることを知った次第でして・・・。

    勝手なお願いで申し訳ありませんが、もし宜しければご検討いただければと思います。

    最後までお読みいただきまして、ありがとうございました。

    返信削除
    返信
    1. はじめまして。

      SMARTalk のプッシュ設定箇所は二箇所ありますが、どちらも設定してありますでしょうか。

      全般的なプッシュ:「設定」→「着信方法」→「プッシュ通知」
      アカウント個別プッシュ:「設定」→「SIPアカウント」→「当該アカウント」→「詳細設定」→「着信方法」→「プッシュ通知」

      全般的なプッシュ指定だけでは個別のプッシュは有効にはならないようですので、個別に指定する必要があります。

      ワタシの P20 Lite は EMUI 8.0.0.144 (C635) で少し違いますが同じ C635 なので基本的には同じと思われます。
      また、Google Play開発者サービスは 13.2.80 で同じです。
      ですが、これで問題は有りません。

      アプリを終了させた場合と終了させない場合で状況はどうでしょうか。
      SMARTalk はなるべくなら終了させないほうがいい、といっています。

      ワタシの場合は終了させていても着信しますけど。

      もし、プッシュ指定の仕方でも改善しないならば、ほかのアプリも試してみてください。

      Zoiper や GS Wave でも同じようにスリープ中の着信をしないようなら、アプリの設定ではなく、ほかに原因があると思われます。

      アプリを変えてみて着信するようであれば、SMARTalk の設定に関する問題か、nova lite 2 の問題が考えられます。

      削除
  3. バイク野郎様

    早速のアドバイス、ありがとうございました。

    SMARTalk の着信設定が2ヶ所必要とは知りませんでした。
    勉強になりました、ありがとうございます。

    早速 以下のような設定で試してみました、
    ◆ SMARTalk のアカウントの方もプッシュ設定
    ◆ バッテリー最適化を無視 → SMARTalk → 許可しない
    ◆ 起動 → SMARTalk → 自動で管理
    ◆ 省エネ系モードのオフ

    バイク野郎さんと同じようにアプリを終了させてやってみたところ
    Wi-Fi環境でスリープ中でも(3時間ほど放置)見事に着信することができました!
    しかしモバイル通信(同様に3時間放置)では着信できませんでした。

    Wi-Fiでできて モバイル通信でできない ということは、
    もしかして格安SIMによるタイムアウトが原因なんですかねぇ・・・。
    SIMはフリーテル(正確には旧フリーテル)を使用しております。

    でも Google Play開発者サービスが改良されて ネット切れがなくなっているのなら
    それも違うような気もするのですが・・・。


    これから SMARTalk アプリを起動した状態での実験もやってみたいと思います。
    電力消費のことも気になりますので「バックグラウンドで省電力待機」でも
    試してみようと思います。
    ※「省電力待機」では起動したことにならないのでしょうか。

    それでもダメなら Zoiper や GS Wave も試してみたいと思います。


    この度はいろいろ教えて頂いてありがとうございました。
    もうどうにもならずに 本当に困っていたので、バイク野郎さんのアドバイスを頂いて
    少し明るさが見えてきました。

    また上記実験の結果も報告させて頂きます。

    この度は本当にありがとうございました。

    返信削除
    返信
    1. やはりそうでしたか。アカウントごとのプッシュ通知は意外と気が付きにくいかも知れませんね。
      Fureetel モバイルでの問題は、udp タイムアウトがあるかも知れません。

      ソフトフォンはレジスト期限内に再レジストしなくてはならないのですが、FUSION IP-Phone Smart はレジスト期限が長く取られているようです。
      そのために MVNO の udp タイムアウトが先にきてしまうと再レジストに失敗することがあります。

      この場合は Google Play開発者サービスの改善とは別に発生する事象になりますから、推定ですが、Freetel の udp タイムアウトの可能性がありますね。

      「設定」→「SIPアカウント」→「当該アカウント」→「詳細設定」→「REGISTERの有効期限」がデフォルトでは 600 秒になっていると思いますが、120 秒程度にしてみてはいかがでしょうか。

      FUION IP-Phone Smart のサーバーがレジスト期限値を大きいものに変えてくると、この設定も効かない可能性はありますが、クライアント側の要求値に沿うようなら改善される可能性があります。

      バックグラウンドで「省電力待機」は試す価値はあると思います。
      うまくなければ戻せばいいだけですし。

      起動状態を維持しないで終了させても着信するなら「省電力待機」の有無は殆ど電力消費には影響しないと思います。


      削除
  4. バイク野郎様


    たびたび申し訳ありません。

    今回もまたアドバイス頂き ありがとうございました。

    確かに REGISTER は600となっていました。

    素人なりに考えたのですが、この REGISTER の数値というのは
    FUION のサーバーが接続の確認を600秒間隔で行なおうとしているのに
    それよりも早いタイミングで Fureetel が接続を切ってしまうと
    接続を確認することができずにサーバーが私の端末を見失ってしまうため
    電話が掛かってきてもプッシュ着信の信号を送ることができない。
    そこで Fureetel が接続を切るよりも早いタイミングで確認をするようにすれば
    確認操作が繰り返され FUION のサーバーは常に私の端末を認識することが
    できるので、プッシュ着信の信号を送ることができる。
    しかし FUION のサーバーが 例えば「300秒以下の確認は受付けない」という
    設定になっていたら、それ以下の数値にしても無効だし、
    もし Fureetel の接続切れがそれ以下の180秒で起きるとしたら、
    もう手の打ちようがない。
    というような解釈でよろしいでしょうか。

    早速、120秒に設定して実験してみようと思います。

    素人考えなのですが、もし120秒で改善が見られなかった場合、
    これをもっと短くしちゃえば良いようにも思うのですが(60秒とか30秒とか)
    そういうものでもないのでしょうか。
    あまり短くすると弊害があるものなのでしょうか。
    もちろん FUION のサーバーが受付けなければいくらやっても無駄ですが。


    また今まで昨日バイク野郎さんに教えて頂いた方法で
    「アプリ起動のまま」「バックグラウンド」「停止」と、いろいろ試していたのですが、
    同じ条件でも 着信したり しなかったり するのです。

    あまり時間を掛けても効率が悪いので今回は30分放置で試しているのですが
    (30分で着信しないようならそれ以上の長時間で着信する訳がない、ということで)

    1回目にちゃんと着信できて「お、上手くいった!」と思っても、
    確認のためにもう1回30分放置して試してみると今度は着信しなかったり・・・。

    設定が間違っていれば毎回失敗、正しければ毎回成功、というものでもないのですかねぇ。

    それともたまたま私が実験する直前に何らかのアプリが通信をして
    Fureetel の接続がまだ生きているタイミングで実験したために上手く着信できた
    ということなんですかね。
    だとしたら これでは成功とはいえませんよね。

    あまり SMARTalk にこだわっても らちが開かないようならば
    ある程度のところで Zoiper や GS Wave を試してみた方が良いのかもしれませんね。


    長々と書き込んでしまいまして申し訳ありません。

    今回もまた勉強になりました。

    本当にありがとうございました。

    返信削除
    返信
    1. ソフトフォンを使う場合、まず SIP REGISTER というロケーション登録(IP アドレス/ドメインとユーザID を登録)をします。
      呼び出しがあると、登録されたユーザーID のロケーション(IPアドレス/ドメイン)を参照して呼び出しを行います。

      そのためにクライアント側は REGISTER 時に自分の REGISTER 有効期限をサーバー側に伝えます。

      サーバーは REGISTETR が成功すると、サーバー側が定める有効期限を返します。

      クライアント側はサーバーから渡された有効期限内に RE-REGISTER します。その間に RE-REGISTER されないと、「登録」は無効になります。

      無効になった場合、クライアント側が改めて REGISTER するタイミングなどはアプリの作りに依存します(改めては REGISTER しないアプリもあります)。

      一方で Android 端末の場合、GCM(Google Cloud Messaging。来年以降は FCM:Firebase Cloud Messaging)が端末にプッシュ通知できるように一定間隔で Keep-Alive 相当の処理をしています。

      GCM はドコモの場合、最大間隔は 29分だったと思います。
      MVNO はセッションがこれよりも短いケースがあり、その場合は GCM が失敗します。
      そうするとプッシュメカニズムがうまく機能しないことになります。

      そこで、GCM 間隔をもっと短くするために PNF NoRoot アプリや HeartBeat Fixer for GCM アプリで短い時間を設定するとうまくいくケースがあります。

      「うまくいくケースがある」というのはファーウェイ機種の場合、WiFi ではこの間隔を短く設定しても5分間隔になる、という奇妙な現象があるからです。

      モバイルの場合は概ね設定した数値に近い間隔で GCM が行われるようです。

      REGISTER 間隔だけでは改善しない場合は GCM 間隔をさきにあげたアプリで2〜3分程度にしてみてはどうでしょうか。

      削除
  5. バイク野郎様


    いつもお世話になります、
    ありがとうございます。

    REGISTETR のご解説ありがとうございました。
    おぼろげですがIP電話の仕組みがなんとなく理解できたような気がします。

    SMARTalk が再度 REGISTER するアプリなのか分かりませんが、
    例えそうだとしても再 REGISTER 時に Fureetel の接続が切れているのでは
    もう どうしようもない、ということなのですねぇ。

    GCM というものも初めて聞く言葉です。
    なるほど、この間隔を Fureetel のタイムアウトよりも短くしてやれば
    接続切れが起きずに SMARTalk の REGISTER も有効であり続けるという訳ですね。

    でもなんか かなり重要な部分の設定変更のようでもありますし、
    知識もないのにイジくりまわして元に(初期値に)戻せなかったらどうしよう、
    と考えると ちょっとハードルが高い感じです。

    また LINE や Yahoo!カーナビの渋滞情報、お天気アプリの天気予報 などは
    問題なく通知されるのですが、これはまた GCM とは別の仕組みなのでしょうか。

    それとできればもうひとつお伺いしたいのですが、
    そもそも SMARTalk を使おうとしているから Fureetel のタイムアウトや GCM といった
    問題が出てくるのであって、素直に Zoiper や GS Wave にしておけば
    そのあたりの不都合はアプリの方で解決してくれて、問題なく着信してくれるものなのでしょうか。

    なんか いろいろ質問ばかりしてしまって申し訳ありません…。



    ところで、ご報告が遅くなってしまって申し訳ありません。
    その後の実験なのですが、この連休中にいろいろ試してみたところ
    バイク野郎さんに教えて頂いた「REGISTER 120秒」にしてみると少し変化がありました。

    やはりアプリ終了からのプッシュ通知が理想なので、タスクボタンで SMARTalk を完全終了してからの実験になります。

    ◆ バッテリー最適化を無視 → SMARTalk → 許可しない
    ◆ 起動 → SMARTalk → 自動で管理

    この設定では相変わらずまったく着信しないのですが、


    ◆ バッテリー最適化を無視 → SMARTalk → 許可
    ◆ 起動 → SMARTalk → 手動で管理

    にしてみると、かなり高い確率で着信するようになりました。

    以前はこの設定でもまったくダメだったので、バイク野郎さんに教えて頂いた
    「アプリ内アカウントのプッシュ通知」「REGISTER 120秒」が効いたのだと思います。

    ただ「高い確率」と書いたのが、
    設定変更後、半日くらいは6~7時間など長時間放置でも着信するのですが、それを過ぎたあたりになると
    着信したり しなかったり、といった不安定な状態になります。
    ここで再起動してみるとまた調子よく着信するようになりました。

    まだテスト時間が短いので確証は得ていないのですが、おそらくこのあたりで一度再起動すると
    また半日くらいは安定して着信できるようになるのではないか、といった感じです。

    同じ設定なのになぜ時間が経つと不安定になるのか、素人にはまったく分かりません。

    このまま SMARTalk を使うのなら、半日に1回、朝と午後に再起動をすればなんとか使えるのかな、
    といった結論に落ち着きつつあります。
    なんとも不便な話しですが・・・。


    さて、ここから先は GCM をイジってまで SMARTalk に固執するのか?
    そもそも「バッテリー最適化を無視→許可」にした場合 アプリを終了したとはいえ本当に省エネになるのか?
    ならば いっそのこと最初から起動したままにしておいた方がシンプルで良いのではないか?
    そろそろ Zoiper や GS Wave を試してみた方が良いのではないか?

    などと悩んでおります。(笑


    でもバイク野郎さんにいろいろと教えて頂いたお陰で、どうにか SMARTalk が使えるようになったので
    これで日常使いにもなんとか耐えられそうになりました。
    今まではそれすらできなかったので、本当に感謝しております。

    本当にありがとうございました。


    またいろいろ試してみて、ご報告させて頂こうと思います。

    今回も長々と書き込んでしまいまして申し訳ありません。

    それでは失礼いたします。。

    返信削除
    返信
    1. GCM の時間変更は短くすれば多少バッテリー消費が増えますが殆ど無視していい程度の消費です。
      それ以外にスマホに影響することはありません。
      ですからハードルは全くないと思っていただいて結構です。

      非常駐アプリ(非起動状態のアプリ)のプッシュ通知はGCMによって実現していますから、これはAndroidの重要なコンポーネントの一つですが間隔を短くしたからといって問題がでることはありません。
      バッテリー消費に多少の影響を与えるだけです。

      ◆ バッテリー最適化を無視 → SMARTalk → 許可
      ◆ 起動 → SMARTalk → 手動で管理

      にしないと着信しないのであれば、そのようにした方がいいと思います。
      機種によってこの部分は違いがあるのかも知れません。
      「バッテリー最適化を無視」の対象にしても、これもバッテリー消費への影響は「多少」であって気にするほどのことではありません。

      ソフトフォンアプリはいろいろ試すのも一つですが、SMARTalkは問題のあるアプリではありませんので、ほかのソフトフォンアプリに変える前にまずはSMARTalkで確実になるようにした方がいいと思います。

      そうでないと却って混乱すると思います。
      音声の遅延とか品質の問題があるのなら別ですがまずは着信性を向上させる方が先だと思います。


      GCMの間隔を2〜3分にしてみてください(恐れるようなことにはなりませんから)。

      また「設定→アプリ→SMARTalk→通知」はすべてオンにしてありますか?
      ご確認ください。

      削除
  6. バイク野郎様


    いつもお世話になります。

    お忙しいところいろいろとご教授頂きまして本当にありがとうございます。


    相変わらず懲りもせずにここ数日悪戦苦闘していて少し気が付いたことがあります。

    あまりにいろいろな設定の組合せで試していたので、自分でも良く分からなくなり、
    きちんと紙に書いて整理しながら実験していてなんとなく気が付きました。

    というのが、

    バッテリー最適化を無視 → 許可・許可しない
    起動 → 自動で管理・手動で管理
    その他バイク野郎さんに教えて頂いた設定変更の有無や
    アプリの終了の仕方(終了・バックグラウンド)など、

    いろいろな組合せで試してきましたが、どれも成功率がランダムなんです。

    ある組合せでは、例えば 1h後→〇 3h後→〇 8h後→× 15h後→〇 だったり
    別の組合せでは 1h後→〇 5h後→× 15h後→〇 18h後→× だったり・・・。

    その設定がアタリならば、最初から最後まで〇になるのが正しい反応でしょうし、
    ハズレならば最初から×のはずだと思うのですが。

    このことから、やっぱりアプリや端末の設定の問題ではなく、
    バイク野郎さんにもご指摘頂いたGCMによるKeep-Alive(ハートビートと同意?)の
    失敗が原因なのかなぁ、、、と。

    バイク野郎さんに教えて頂いたことを参考に、分からないなりにいろいろと調べてみて
    格安SIMのセッションタイムアウト、GCMによるハートビート通信、アプリのレジスト切れ、
    などの関係性や仕組みも、知識がないなりに何となく理解できたような気がします。

    その結果、どうやら Freete が問題の根源ではないかと思うようになりました。

    ※ただ もし Doze の問題ではなく GCM の問題だとしたら、今まで使っていた古いスマホ
     (Android 4.4.2)も同じ Freete だったのに、なぜこの問題が起きなかったのかが不思議ですが。


    そこで、やっぱり次はGCMを変更してみるしかない、ということで、
    ご紹介頂いた「Push Notifications Fixer」や「HeartBeat Fixer」を入れようと思ったのですが、
    どちらも GooglePlay に見当たらないのです。

    どちらのアプリも検索してみると、使い方や設定の紹介をしている方が大勢いらっしゃって、
    皆さん「ダウンロードはコチラ」というようなリンクを貼っておられるのですが、
    そのリンクをたどっても見つけられませんでした。

    どちらのアプリも検索してみると GooglePlay 以外でもダウンロードできそうなところはあったのですが、
    どこも英語表記で書いてあることも分からず、どんなサイトかも分からないのでダウンロードするのは
    気が進みませんでした。

    皆さん GooglePlay からダウンロードされているようなのに、なんで消えてしまったんでしょうねぇ。

    今までバイク野郎さんにはいろいろと教えて頂いてお世話になったのに、、、
    せっかく拝借したお知恵を活用できなくて残念です、申し訳ありません。。

    返信削除
    返信
    1. 現在はGoogle Play storeからは検索できないようです。
      下記からダウンロードして、スマホでクリックするとアプリがインストールされます。
      インストール前にスマホの「設定→セキュリティ→提供元不明のアプリ」をオンにしておきます。

      https://drive.google.com/file/d/1DITYgfYHt4X7BZEmMaB61Eedg-tEfEss/view?usp=sharing

      Doze は Android 6.0 以降に実装されましたのでそれ以前のバージョンでは Doze という概念がありません。
      つまり、スリープの入り方が違う(Doze ほど深いスリープにはならない)ということです。

      削除
  7. バイク野郎様


    いつもお世話になります。

    すみません、クラウドとか良く分からなくてアレなのですが、
    URLに「drive.google.com」とあるってことは、バイク野郎さんのお持ちのファイルを分けて頂いた、
    ということですよね。

    もう なにからなにまでお世話になってしまって、本当に申し訳ありません。
    早速試してみようと思います。


    >つまり、スリープの入り方が違う(Doze ほど深いスリープにはならない)ということです。

    ということは、
    古い Android や Doze に入る前の Android 8.0 では
    「 Freete のセッションタイムアウト > GCMの間隔 」だから Keep-Alive が成立し、
    Doze に入ってしまった Android 8.0 では
    「 Freete のセッションタイムアウト < GCMの間隔 」になるから Keep-Alive が失敗する、
    というような解釈でよろしいのでしょうか。

    なるほど、そう考えると今までの実験で成功・失敗がランダムだったのが分かるような気がします。
    失敗の後に成功したようなケースでは、たまたま Android の方で必要があって通信を確保する為に
    起動し(画面は暗いままなのでバックグラウンドで起動?)、まだ Keep-Alive が生きている
    タイミングで私がテストをしてしまったからプッシュ着信に成功していただけ、ということですかね。

    なかなか難しいものなのですねぇ。

    私の周りにも HUAWEI を使っている人が何人かいるのですが、こんな問題は起きてないんですよね。
    (もちろんみんなスマホの知識は浅いです 笑)
    ただ私と違うのは、みんなは大手キャリア系のSIMを使っていて、格安SIMは私だけなんですよ。
    もし Freete に原因があるのなら、やっぱりそこだったのかぁ、という感じですね。

    今までの使用では問題はなかったので気が付きませんでしたが、
    やっぱり安いだけあって格安SIMなりのデメリットもあるものなんですね。

    この度は大変お世話になりました。
    本当にありがとうございました。

    また試した結果をご報告させて頂きます。

    返信削除
    返信
    1. アプリはワタシの手持ちのモノです。
      一度インストールすると、Google Play Store の自分のライブラリに現れます。念の為最新版があるかも知れませんから、ライブラリから改めてインストールし直すのがいいかと思います。
      格安SIMでもタイムアウト時間を短くしていないところは結構ありますが、0SIMやFreetelは短みたいです。

      削除
  8. バイク野郎様


    いつもお世話になります。
    ご無沙汰しております。

    先日はPNFをお譲り頂きましてありがとうございました。

    その後もいろいろとやってみたのですが、
    もう どうにもなりません。


    PNFでハートビートを3分にしてみたのですが変化がなく、2分 1分 とさらに短くしてみました。
    いくらFreetelのタイムアウトが短くても さすがに1分以下ということもないでしょうから
    これでGCMの通信は確立できていると思うのですが、これでもダメでした。

    Doze時にアプリが停止してしまうのかもと思い「バッテリー最適化を無視」「起動 → 手動で管理」
    に設定しても症状は変わらずです。


    ちなみに現在は以下のような設定です。

    スマホ設定
    バッテリー最適化を無視 → 許可
    起動 → 手動で管理
    設定 → アプリ → SMARTalk → 通知 優先通知も含めてすべてオン


    SMARTalk設定
    環境設定→高度な設定→OS起動時に起動 オン
    着信 プッシュ → アカウント設定でもプッシュ
    REGISTER 120

    PNF → モバイル通信 1分  Wifi 5分
    (外出中に着信したいので家での実験ではWifiをオフにしています)

    SMARTalkの終了手順
    アプリでの「終了」から、ホーム画面の□ボタンで削除して完全終了


    この設定で実験した時の実際の結果は以下のようになりました。

    01:00 アプリを起動して正しく着信できるのを確認後に実験スタート
    13:00 プッシュ着信成功
    20:00 プッシュ着信失敗

    12時間も微動だにせず放置したあとの1回目の着信は成功したのに
    その7時間後の着信には失敗します。
    しかもこの7時間の中で何回かメールを見たりしてスマホを起動しているのに
    それでも失敗してしまいます。

    今までやってきた他のパターンの設定でも似たような結果で
    最初の数時間は良いけれど、その後時間が経つに従ってダメになる、
    というような感じです。

    今回の例でいえば、最初は12時間もの放置で当然Dozeに入っている状態だと思うのですが
    それでもちゃんと着信できたということは、設定の狙い通りで正しい作動をしたと思えます。
    しかし次の7時間は途中でスマホを起動しているのにも関わらず上手くいかない・・・。
    この理由がまったくわかりません。

    試しにWifiをオンにして試してみたのですが、やっぱり同じような感じで
    最初は良いのですが時間が経つとWifi経由でも着信できませんでした。

    Dozeやハートビートの問題ではなく、時間が経つとアプリのREGISTER間隔とハートビートの間隔に
    ズレが出て、あるタイミングで通信ができずにREGISTER切れてしまうのかなと思い、
    REGISTERの数値を 60・120・600・86400 などに変更してみましたがどれもやっぱり同じでした。
    (86400は一度も成功しませんでした)
    でも1分間隔ということは ほぼ途切れなくハートビート通信を行なっているようなものでしょうから
    それも考え難いんですかねぇ。

    このハートビート間隔ですが、試しに5分でやってみても結果は同じようなものでした。


    もう なにからなにまでバイク野郎さんに頼ってしまって申し訳ないのですが、
    この設定をご覧になって なにかマズイところはありませんでしょうか。

    やっぱりこのアプリは使えないんでしょうかねぇ。

    最後までお読み頂きましてありがとうございました。

    返信削除
    返信
    1. >アプリでの「終了」から、ホーム画面の□ボタンで削除して完全終了
      とありますが、アプリを「終了」させればホーム画面になるはずですが、それでもなおホームボタン□で「完全削除」の意味がよくわかりません。
      ホームボタンの右側の「アプリリスト」ボタンでそのリストからも「削除」のことでしょうか。

      アプリの「終了」以上のことはしなくてもいいと思います。

      あとスマホの「設定」→「電池」で「省電力」設定はオフですよね。

      また、13時間後に着信のあと、アプリはどういう状況でしょうか。
      1.改めてアプリを「終了」または、「終了」せずにホーム画面に戻した、のどちらでしょうか
      2.アプリリストでも削除したのかどうか

      整理してみましょう。
      【スマホ設定】
      ・バッテリー最適化を無視 → 許可
      ・起動 → 手動で管理
      ・設定 → アプリ → SMARTalk → 通知 優先通知も含めてすべてオン
      →これらの設定は変更しなくていいと思います(というかこのままがいいと思います)。


      【SMARTalk設定】
      ・環境設定→高度な設定→OS起動時に起動 オン
      →これは着信性には関係しませんので、オンでもオフでも構いません。

      ・着信 プッシュ → アカウント設定でもプッシュ
      →このままの設定にしておいてください。

      ・REGISTER 120
      →これまでの検証をコメントいただいた限りでは初期値の600で問題ないように思います。

      ・PNF → モバイル通信 1分  Wifi 5分
      →これはこの設定値でいいと思います。



      スマホの「設定」→「システム」→「開発者向けオプション」→「実行中のサービス」には「SMARTalk」が残っているのかどうかを確認してください(とくに13時間経過以降での状態)。

      「開発者向けオプション」が「システム」の中にない場合は、次のようにすれば現れるようになります。

      「設定」→「システム」→「端末情報」→「ビルド番号」を7回ほど連打する

      これで「開発者向けサービスが有効になりました」となるはずです(7回以上連打しても問題はありませんので大丈夫です)。

      こうすることで現在実行中のアプリやキャッシュされたアプリの一覧を確認できます。


      一度、「端末管理」アプリから、「最適化」と「クリーンアップ」を実施して、そのまま強制再起動してみてください。

      「強制再起動」はスマホの電源ボタンを10秒以上、画面が消えて一回バイブされるまで押し続けます。
      バイブがくれば電源ボタンを離してください。端末が起動プロセスに入り起動されます。

      削除
  9. バイク野郎様


    いつもお世話になります。
    早速のアドバイス ありがとうございます。

    >ホームボタン□で「完全削除」の意味がよくわかりません。
    >ホームボタンの右側の「アプリリスト」ボタンでそのリストからも「削除」のことでしょうか。

    はい、その通りです。
    アプリにある終了ボタンだけでは そのアプリは画面上から消えているだけで
    一時待機のような状態で次の起動に備えてメモリやバッテリーを使っているので、
    四角いボタン(タスクメニューボタンというのでしょうか?)からしっかりと終了させてやる。
    ということを聞いていたので、今までずっと習慣的にやっていたのですが、
    間違った使い方だったのでしょうか。


    >あとスマホの「設定」→「電池」で「省電力」設定はオフですよね。

    はい、「省電力」「ウルトラ省電力」両方ともオフです。


    >また、13時間後に着信のあと、アプリはどういう状況でしょうか。
    >1.改めてアプリを「終了」または、「終了」せずにホーム画面に戻した、のどちらでしょうか
    >2.アプリリストでも削除したのかどうか

    改めてアプリで「終了」して、四角いボタンでリストからも削除させています。


    >スマホの「設定」→「システム」→「開発者向けオプション」→「実行中のサービス」には
    >「SMARTalk」が残っているのかどうかを確認してください(とくに13時間経過以降での状態)。

    実験スタート時(アプリで終了、リストからも削除)の状態で見てみたのですが
    「実行中のサービス」に SMARTalk はありませんでした。
    これからまた実験してみますので、時間経過後の状態をご報告させて頂きます。


    本当に何度もお世話になってしまって申し訳ありません。
    いつのまにかバイク野郎さんが SMARTalk の先生のようになってしまって・・・。

    本当にありがとうございます。

    返信削除
    返信
    1. タスクボタン(ホームボタンの右側のボタン)のタスク一覧から削除しても「実行中サービス」からすぐに消えるわけではないのですが、消えているとなると少し気になりますね。

      また SMARTalk は「実行中サービス」になくても「プッシュ」設定していれば着信はするはずなのですが。

      アプリを使ったあとタスクボタンで即座に消さなければならないほど神経を使う必要はありません。
      最近のスマホは結構メモリ容量もありますから、いくつかがそのままでもスマホの動作にはさほど影響しないはずです。

      少し動作がもっさりとしてるな? と思った特に消せばいい程度です。

      「実行中サービス」に SMARTalk がないことを確認し、あった場合に「実行中サービス」から一旦停止させ、「キャッシュしたプロセス」からも停止させて、画面表示状態のままで(ホーム画面に戻してかまいません)、その状態で着信するかどうかを確認してみてください。

      これがうまくいかないようなら、SMARTalk のプッシュ着信が機能していないことになりますからほかにプッシュ着信しない原因があります。

      ただ、スリープ後13時間経過して着信しているようですからプッシュ着信は機能していると思うのですが。

      削除
    2. こちらでも P20 Lite android 8.0 で追試してみました。

      まず、SMARTalk を起動してプッシュにしていれば、アプリの終了(SMARTalk アプリの右上の縦3つの点をクリックして現れるメニューからの終了)をしない場合、ホームに戻っても通知領域には SMARTalk のアイコンが表示された状態で「省電力待機中-プッシュ…」となっていると思います。

      アプリの終了を行うと、この通知領域の表示は消えますが、タスク一覧にはまだ残っていても、開発者サービスの「実行中サービス」一覧からは消えますね。

      ですから、この状態はアプリが「終了状態」と考えます。

      当方の追試では、この状態でタスク一覧から消しても消さなくてもスリープに入って着信はします。

      どうしても着信を逃すようなら、アプリ終了はせずに「省電力待機中-プッシュ…」状態で通知領域に通知された状態にしておくのが次善の対策かと思います。

      nova Lite 2 Android 8.0 の場合の現象なのか、Freetel との相性の問題なのかは不明ですが、「省電力待機中-プッシュ…」にするしかないのかも知れません。

      削除
  10. バイク野郎様


    いつもお世話になります。

    早速ですが実験の結果は以下のようになりました。
    (予想通り いつもと同じ展開です)


    1、実験スタート
      アプリを起動して正しく着信できるのを確認。
      アプリからの「終了」、タスク一覧からも「削除」
      開発者サービスの「実行中サービス」に表示はありません。

    2、14時間後 プッシュ着信成功
      1回目の着信は成功しました。
      この時は開発者サービスの「実行中サービス」に表示されています。

    3、その後アプリからの「終了」、タスク一覧からも「削除」して実験続行
      アプリを終了すると「実行中サービス」から表示が消えました。

    4、4時間後(実験開始から18時間後) プッシュ着信失敗
      2回目の着信は失敗しました。
      この時「実行中サービス」に表示はありませんでした。

    5、「実行中サービス」画面(SMARTalk はありません)を表示させた状態で
      試してみましたが着信できませんでした。

    6、これ以降は何度やっても着信することはありませんでした。


    今までの実験結果を見ていて思うのですが、
    時間の経過の問題ではなく、回数の問題のような気がするんですよね。

    実験開始後、時間の長短に関わらず1回目は成功して2回目は失敗する、
    そしてそれ以降は連続で失敗。


    でも上記の1と3の操作は同じ内容ですよね。

    そう考えれば、ある意味 3の段階での操作は改めて実験スタートするのと
    同じことなのですから次の着信に成功しても良さそうなものだと思うのですが。

    1にしろ 3にしろ、どちらもアプリを終了した時点では「実行中サービス」に
    表示されていなのに、その後の 2では成功し 4では失敗。

    1→2ではちゃんと理屈通りに作動するのに、3→4は理屈通りにいかない。
    このどうにも理解できない理不尽な動きが相性の問題ってことなんですかね。

    スマホの作動は17:38に書込みして頂いた通りでした。

    もう いよいよダメですねぇ。
    プッシュ通知はあきらめるしかないみたいですね。

    バイク野郎さんのおっしゃる通り「省電力待機中-プッシュ…」でしばらく
    やってみて、また Zoiper などをポツポツ試してみようか思います。


    10月6日の書込みも拝読しました。
    本当にその通りですよね。
    公式アプリが使い物にならないんじゃ、新規客どころか既存の利用客だって
    離れていくと思うんですけど、会社はなにを考えてるんですかね。

    常時起動でもバッテリー消費は気にするほどでもなさそうですし、
    しばらくはこれでやっていこうかと思います。



    今までいろいろとご教授頂き 本当にありがとうございました。
    結局 SMARTalk はダメでしたが、REGISTER や GCM・ハートビート・格安SIMのタイムアウトなど、
    今まで知らなかったことを教えて頂いて、とても勉強になりました。

    貴重なお時間を割いて頂き、本当に申し訳ありませんでした。

    バイク野郎さんのブログは専門性が高くて私にはなかなか理解できないのですが、
    これからも拝読させて頂こうと思います。

    本当にありがとうございました。

    返信削除
    返信
    1. そうですか、2回目以降が失敗するというのはこちらの結果とは異なりますので何が原因でしょうか。

      当方の検証では2回目以降も問題なく着信します。
      これはアプリを終了させていてもです。

      終了させずに「省電力待機中-プッシュ」ではもちろん着信します。

      nova Lite 2 でのアプリの問題なのか、ほかに原因があるのかわかりません。
      「省電力待機中-プッシュ」でも改善しないようなら SMARTalk をやめて GS Wave か Zoiper を試すしかなさそうです。

      まずは、「省電力待機中-プッシュ」で様子をみてはいかがでしょうか。

      IP 電話はある程度の知識を伴いますので、多少の専門的内容になるのはご勘弁ください。

      Android の設定一つをとっても、その設定の意味を理解する必要があります。

      また SIP というプロトコルについてもおおよその知識は必要です。
      そうでないと、アプリの設定にしてもなぜそのような設定をするのかがわかりません。

      インストールしただけでうまくいく場合はそれでいいのですが、問題が発生した場合にどのように対応したらいいかは多少の専門的知識が必要になります。
      やむを得ないことですが。

      それでも実用に耐えられるようになれば楽しく感じられると思います。

      IP 電話がよくないのではなく、端末や Android のバージョンとそのベンダー仕様、アプリなどの問題ですので IP 電話を決して嫌いにはならないでいただきたく思います。

      削除