お世話になります。
UIWebViewを基本としたiPhoneアプリの開発に取り組んでいます。
基本機能は完成しているのですが、ネットワークに接続するアプリの場合、圏外時に操作した場合にアラートを上げる仕様でないとアップルの審査を通らないと聞いています。
その際、Reachabilityを使用する必要があると理解しているのですが、様々なサイトのサンプルコードを見ても記載先がいまいち曖昧でうまくいきません。(コードを理解できていないのでそもそもなのですが)
「どこに」、「どのコードを記載する」というレベルで示唆いただけませんでしょうか。
※Reachability.hとReachability.mおよびSystemConfigration.frameworkは導入済みです。
※xcodeのバージョンは4.6です。
※基本的な構成ファイル名は下記の通りです。
1.AppDelegate.h
2.AppDelegate.m
3.MainStoryboard.storyboard
4.ViewController.h
5.ViewController.m
6.Reachability.h
7.Reachability.m
勘違いしている部分があればご指摘ください。
このステップをクリアしないとアップルの審査を通らないと聞いていますので、なにとぞよろしくお願いいたします。(必須機能であればワンクリックで機能付加できればいいのに、と思いました、、)
No.3ベストアンサー
- 回答日時:
-(void) webView:(UIWebView *)webView didFailLoadWithError:(NSError) error
で、エラーが起きた時の処理をやるのですから、この処理書いてなければ、まともな、エラー処理はできないでしょう。
そもそも、アラート表示出していいのか、どんなアラート表示を出したいのかは、App設計者のみ知ることですからか。
No.2
- 回答日時:
あらためて、UIWebViewのドキュメントを見てみました。
ちなみに、私のAppは、NSURLConnectionを使うものですが、ネットに繋げない場合は、ほとんど即座に、コールバックがかかります。
UIWebViewでは、NSURLRequestまでしかつかわないようですが、UIWebView Delegateの処理は、書いてるでしょうか?
ドキュメントを見る限り、
-(void) webView:(UIWebView *)webView didFailLoadWithError:(NSError) error
が呼ばれていて、しかるべきだと思いますが。
一般論として
1)ネットがない。GPRS的な手続きで失敗している。この場合、即リターン
2)ネットにつなげている(GPRS的手続きはOK)で、リモートからレスポンスが帰ってこない。この場合は、アクティビティインディケーターがつきっぱなしで、タイムアウトまで待たないと行けないのは、そのとおり。
ということで、同じエラーでも処理が違います。圏外の実験は、簡易、電波暗室箱でも、使っているのでしょうか?
この回答への補足
riding_heartさんコメントありがとうございます。
Delegateの処理がしっかりできていれば、特別なコードを書かずともUIWebViewの基本仕様としてエラー表示してくれるはずと解釈すればよろしいでしょうか。
圏外の実験は、iPhoneを機内モード(電波OFFモード)にして試しています。Reachabilityを実装するまでは、機内モードでも、Active Indicatorが回り続け、何のエラーも返してくれませんでした。
おはずかしながら、Delegateの概念もいまいち理解できておらず、そのあたりの処理で失敗している可能性はあると思います。
No.1
- 回答日時:
ネットワークを使うAppを販売しているものですが。
もちろん、ネットワークアクセスする場合に、コネクションできない場合、エラー表示を出すのが自然な局面で、出さないようでは、審査は通らないでしょう。しかし、Reachability.(h|m)を使わないと行けないという事はないです。実際に、UIWebViewのサンプルコードでも、そんなのは使っていないのがあるし、私も使った事無いですから。
そもそも、圏外では、繋ぎに行っても繋がらない(電話をかけれない)のですから、ことさら特殊な事をする必要はなく、単に普通のコネクションエラーの処理を書けば、いいだけだと思いますが。
この回答への補足
riding_heartさん、コメントありがとうございます。
Reachability を使わずともコネクションエラーを出せるとのことですが、具体的にはどのようは方法になりますでしょうか。
UIWebViewの場合、電波のない状態ででWebへ接続をかけても、Active Indicatorはぐるぐると回り続けており、特にエラー表示は出ません。もちろんページ遷移もしませんが。
そのような場合にReachabilityを使わずともエラーを出せるのであれば実装方法を簡単に教えていただけると助かります。
どうぞよろしくお願いいたします。
(Reachabilityを使ってのエラー表示はその後実現できたのですが、無駄に複雑だなぁと感じました)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(スマホアプリ・スマホゲーム) アプリをスマホにダウンロード、インストールする方法 3 2022/08/13 11:26
- CAD・DTP 「機能ブロック図」の描画用フリーソフトを教えてください 1 2022/09/23 16:12
- 財務・会計・経理 業者間での注文書・請書の取り扱いについて 2 2022/06/27 15:53
- ノートパソコン 今まで普通に使えてたパソコンが急にWiFiが接続できなくなりました。 トラブルシューティングを実行し 7 2023/06/12 13:36
- その他(メールソフト・メールサービス) これは詐欺メールでしょうか? カテ違いでしたらすみません。 「楽天カードから緊急のご連絡」というタイ 7 2022/06/30 19:37
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- Windows 10 explorerをedgeで開く方法 2 2022/06/05 14:59
- Android(アンドロイド) いま3台のAndroidを使っています。 AndroidってiPhoneには無いmicroSDXCが 1 2022/05/06 11:42
- Wi-Fi・無線LAN PCWi-Fiの設定方法がわからなくて困っています。 4 2022/12/28 18:30
- Android(アンドロイド) auのAndroid端末のSIMカードがロックされてしまいました。 6 2022/08/22 20:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
どうやってもFor文を抜けてしま...
-
vbaのエラー対応(実行時エラー...
-
特定の名前のオートシェイプの...
-
条件文でelseはつけるべき?
-
“try/catch”と“if/else”
-
エクセルVBAでロックをかけたい
-
シグナル 6(SIGABRT)とは?
-
エクセル VBAで複数セル選択時...
-
CImage::Loadの戻り値は何でし...
-
iPhoneのニューラルエンジンっ...
-
VBA Vlookup #N/A表示させない方法
-
【Vb.net】プリンタジョブの取得
-
VBA 複数の行を高速で削除する...
-
StatusStripの表示が更新されな...
-
IF文に時間(何時から何時ま...
-
VBAの進捗状況をリアルタイ...
-
private subモジュールを他のモ...
-
特定のファイルを他のプロセス...
-
複数個のTextBoxでいずれかの内...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
private subモジュールを他のモ...
-
IF文に時間(何時から何時ま...
-
マクロで、次のコードへ行く前...
-
特定の名前のオートシェイプの...
-
シグナル 6(SIGABRT)とは?
-
特定のファイルを他のプロセス...
-
ExcelのVBAで、選択したファイ...
-
Excel VBA セルの名前があるか...
-
どう増強すべきか
-
Word VBA。各マクロの間に待ち...
-
【VBA】エラー処理で別プロシー...
-
UWSCのTHREADについて
-
シェルスクリプトでファイル内...
-
ドリブン??
-
Functionで戻り値を複数返す方法
-
iPhoneのニューラルエンジンっ...
-
エクセル VBAで複数セル選択時...
-
COBOL OCCURSで指定したデータ...
-
どうやってもFor文を抜けてしま...
おすすめ情報