iPhoneの到達可能性チェック
-
13-09-2019 - |
質問
私は(到達可能性をチェック)やりたいコードの例をいくつか見つけたが、それのどれも私には有用であることに十分正確であるように思いません。これは素晴らしいプレーを望んでいない理由を私は理解することはできません。
私は私のプロジェクトでreachability.h / mが、私がやっている必要があります。
#import <SystemConfiguration/SystemConfiguration.h>
そして私は、フレームワークが追加されました。私も持っています:
#import "Reachability.h"
私は到達可能性を使用しようとしているれている.Mの上部にあるます。
Reachability* reachability = [Reachability sharedReachability];
[reachability setHostName:@"http://www.google.com"]; // set your host name here
NetworkStatus remoteHostStatus = [reachability remoteHostStatus];
if(remoteHostStatus == NotReachable) {NSLog(@"no");}
else if (remoteHostStatus == ReachableViaWiFiNetwork) {NSLog(@"wifi"); }
else if (remoteHostStatus == ReachableViaCarrierDataNetwork) {NSLog(@"cell"); }
これは私の問題のすべての種類を与えています。私が間違って何をやっていますか?私はそれは私が何をしたいのか可能にするためにどこに置くことが必要であるかを把握するには時間が来るとき、私は私が行うかどうしたいのかを知りたい場合、私はちょうどかかわらず、ハードの時間を持って、大丈夫コーダです。 (だから、イライラ)
更新:これは、何が起こっているのです。これは私が持っている私のViewController、である。
#import <SystemConfiguration/SystemConfiguration.h>
と
#import "Reachability.h"
で設定します。これは、はるかにプログラミングの私の最も好きな部分である stack.imgur.com/WNNef.png の
<サブ>(ソース: sneakyness.com の)サブ>
FWIW、我々は我々のコードでこれを実装することになったことはありません。インターネットアクセス(懸賞を入力し、DVDを購入する)必要な2つの機能は、主な機能はありませんでした。何も他のインターネットアクセスを必要としません。
代わりに、より多くのコードを追加する、私たちは、彼らがこの機能を使用するには、インターネットに接続する必要があり、ユーザーを伝える通知に両方のインターネットビューの背景を設定します。これは、アプリケーションのインターフェイスの残りの部分をテーマにした、上品/よくやりました。彼らは、しかし、我々は実際に映画にに関するものであっアイテムを配ったことを確認するために、個人的な電話を手に入れた、承認プロセスの間にそれについて何も言いませんでした。彼らの通常あいまいな合意によると、あなたはそれ以外の懸賞を持つことが許可されていません。
私もこれは同様ideaologyを彼らの「あなたは絶対にそれらを必要とする場合には唯一のものを使用する」をより厳密に付着思うだろう。
解決
あなたのスクリーンショットから、到達可能性がプロジェクトに追加されていない、あなたのように思えます。あなたはアップルからの到達可能性をダウンロードする必要があります:
https://developer.apple.com/library /content/samplecode/Reachability/Introduction/Intro.htmlする
そして、あなたのプロジェクトに.Hとの.mファイルの両方を追加します。
更新:あなたが到達可能性を持って指摘しました。しかし、あなたは、あなたが記載されたエラーを持っている理由最新バージョンを見て、私は見ることができます - 彼らは、APIを変更し、あなたはおそらく、あなたがどこかに見つかったサンプルコードを使用しています。試してみてください。
.hファイルでます:
//import Reachability class
#import "Reachability.h"
// declare Reachability, you no longer have a singleton but manage instances
Reachability* reachability;
の.mファイルでます:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNetworkChange:) name:kReachabilityChangedNotification object:nil];
reachability = [Reachability reachabilityForInternetConnection];
[reachability startNotifier];
NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus];
if(remoteHostStatus == NotReachable) {NSLog(@"no");}
else if (remoteHostStatus == ReachableViaWiFi) {NSLog(@"wifi"); }
else if (remoteHostStatus == ReachableViaWWAN) {NSLog(@"cell"); }
.....
- (void) handleNetworkChange:(NSNotification *)notice
{
NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus];
if(remoteHostStatus == NotReachable) {NSLog(@"no");}
else if (remoteHostStatus == ReachableViaWiFi) {NSLog(@"wifi"); }
else if (remoteHostStatus == ReachableViaWWAN) {NSLog(@"cell"); }
}
他のヒント
[reachability setHostName:@"http://www.google.com"];
注意!私は、httpあれば、それは常に「NotReachable」だという問題が発生しました://接頭辞が使用されているが、
ラファエル
ここでは、右のコードです!!!
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(handleNetworkChange:) name: kReachabilityChangedNotification object: nil];
reachability = [Reachability reachabilityForInternetConnection];
[reachability startNotifier];
NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus];
if(remoteHostStatus == NotReachable) {NSLog(@"no");}
else if (remoteHostStatus == ReachableViaWiFi) {NSLog(@"wifi"); }
else if (remoteHostStatus == ReachableViaWWAN) {NSLog(@"cell"); }
あなたはどこでも、次のコードを持っていますか?
[reachability startNotifier];
あなたの到達可能性のコードは、Apple社の例からであれば、あなたはそれがあなたにステータスの更新を報告し始めることができる前にことを行う必要があります。
これを変更
reachability = [Reachability reachabilityForInternetConnection];
これに
reachability = [[Reachability reachabilityForInternetConnection] retain];