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

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

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

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

解決済

2回答

1315閲覧

携帯電波がない場合は、MonacaのpushPage、popPage、<ons-back-button>などを実行させない方法

wallaby_66

総合スコア12

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

1クリップ

投稿2018/08/23 14:10

Monacaでサーバーとの通信を前提としたアプリを作っています。

ページ遷移時にAjaxでデータをサーバーから受信して各種処理をさせています。

そのため、携帯電波がない場合だと、アプリ動作に支障がでるため、
「携帯圏外の場合は、pushPage、popPage、<ons-back-button>を実行させたくない」のですが、
これをシンプルに実装するには、どのような方法があるでしょうか?

https://lifehackdev.xsrv.jp/ZakkiBlog/articles/detail/hybrid_app5 を参考に、電波状態を検知する方法はわかるのですが、pushPage、popPage、<ons-back-button>の全てにonlineFlagを見た条件分岐を記載する方法しか思い浮かびません。

スマートな方法としてどのような記述があるか、アドバイスいただけないでしょうか?

●上記URLで紹介されている電波の確認方法
// オンラインの判定(オンライン)
document.addEventListener("online", onOnline, false);
function onOnline() {
onlineFlag = true;
}
// オフラインの判定(オフライン)
document.addEventListener("offline", onOffline, false);
function onOffline() {
onlineFlag = false;
}

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

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

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

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

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

guest

回答2

0

ベストアンサー

onlineFlagの真偽で表示するタグを使い分けたら如何でしょう?
不通のときは、

<ons-button modifier="quiet" disabled="true">

を表示しておいて、

angularjs を使っているのでしたら、

ng-show="onlineFlag"

JQueryでしたら、

if(onlineFlag){ $("#id").show(); }

みたいな。

投稿2018/08/29 12:34

wdysht

総合スコア13

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

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

wallaby_66

2018/09/08 07:37

なるほど、disabledを切り替えるのは、有りですね。 今回はネットワーク未接続になったら、画面全体にエラーを出して、ボタンやリンクなどが事実上使えない状態にすることで対応しようと思います
guest

0

Wifiでつないでるときはどうするの?とか、BLその他のネットワークで、とか

どーする?

投稿2018/08/23 14:34

y_waiwai

総合スコア87774

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

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

wallaby_66

2018/08/24 11:16

当方、ご指摘の意味を理解できておらず、見当違いな回答をしている気がしますが。。。 携帯キャリアの電波、Wi-Fi、有線LANなど、種類は問わず、「通信ができない状態」のときにpushPage、popPageなどのメソドや、ons-back-buttonなどのコンポーネントが呼び出された際、ページ遷移を行わず、且つ、「ネットワークに接続されていません」といった趣旨のエラーを出したいと考えています。 pushPageで次ページが呼び出された時に、サーバーからデータを取得するプログラムを走らせているのですが、そのプログラムの最初に「ネットワークの接続の判定してエラー処理」という方法でも一応の目的は果たせるのですが、これだと画面遷移してから処理しているので、ユーザにとって煩わしいですし、なにより「ページ遷移後に実行される各プログラム」に全て同じ処理を書いてしまうという・・・。恥ずかしながら趣味の日曜プログラマーでは、これぐらいしかアイデアがなく、質問を掲載させていただいた次第です。
y_waiwai

2018/08/29 14:08

とにかくネットワークに繋がっていなければ、という質問であれば、あらかじめネットワークに繋がってるかどうかをチェックすればいいだけですが、そういう質問でしょうか。 それならいくらでもチェック方法はあると思いますけど、それでいいんでしょうか
wallaby_66

2018/09/08 07:32

ご回答有り難うございます。 各処理にネットワーク接続状態をチェックするプログラムを書いておけばいいのですが、毎回同じ処理を書くのも冗長だなぁと考えた次第です。 y_waiwai様にレスを書いているときに、「ネットワークがつながっていないときは、画面全体にモーダルをかけて、エラーメッセージを出す(ボタン等を押せない状態にする)」ことで冗長な記載もせずに済むと思いつきました。ネットワークに繋がっていないと利用でいないサービスなので、これで行こうと思います。 ご協力いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問