AFNETWORKING 2.0による到達可能性を設定する
-
21-12-2019 - |
質問
新しい2.0を使用して到達可能性を設定しようとしています。
私のAppDelegateで、SharedManagerを初期化します。
// Instantiate Shared Manager
[AFNetworkReachabilityManager sharedManager];
.
その後、関連するVCメソッドでISREATHABABEがかどうかを確認します。
// Double check with logging
if ([[AFNetworkReachabilityManager sharedManager] isReachable]) {
NSLog(@"IS REACHABILE");
} else {
NSLog(@"NOT REACHABLE");
}
.
現時点ではこれはシミュレータで予想通りでは機能していませんが、これがデバイスでテストされる必要があると思います。
質問 私がやりたいことは、VC内の接続性を監視することです。そのため、ViewDIDLOADでは次の点を実行します。
// Start monitoring the internet connection
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
.
それから変更に登録しますか?ネットワーク接続の変更を1回、ドキュメントから表示できないと呼ばれます。
他のヒント
シングルトンAFTTPRequestOperationManagerクラスを持っています。シングルトンには方法があります:
+(void)connectedCompletionBlock:(void(^)(BOOL connected))block {
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
BOOL con = NO;
NSLog(@"Reachability: %@", AFStringFromNetworkReachabilityStatus(status));
if (status == AFNetworkReachabilityStatusReachableViaWWAN || status == AFNetworkReachabilityStatusReachableViaWiFi) {
con = YES;
}
if (block) {
[[AFNetworkReachabilityManager sharedManager] stopMonitoring];
block(con);
}
}];
.
}
インターネットが到達可能なかどうかを示すブロックを返すこのメソッドを呼び出す要求を作成する前に:
[TLPRequestManager connectedCompletionBlock:^(BOOL connected) {
if (connected) {
// Make a request
}else{
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"Notice" message:@"Internet is not available." delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles: nil];
[alertView show];
}
}];
. 私はあなたの質問とすべての答えを経て行っていました。その後、私はこれらすべてのものを一度やることにしました。したがって、私の既存のプロジェクトでは、Cocoa-Podsを通してAfnetworkingを含めたばかりで、ここで完全に泣いている解決策です。
解決策 - まずAFNetworkReachibilityManagerはシングルトンクラスです。SharedManagerのAppDelegateの初期化を行う必要はありません。
//[AFNetworkReachabilityManager sharedManager];
#import <AFNetworkReachabilityManager.h>
- (void)viewDidLoad {
//Starting the network monitoring process
[[AFNetworkReachabilityManager sharedManager]startMonitoring];
//Checking the Internet connection...
[[AFNetworkReachabilityManager sharedManager]setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status){
if (status == AFNetworkReachabilityStatusReachableViaWWAN || status == AFNetworkReachabilityStatusReachableViaWiFi) {
UIAlertView *alertNetFound = [[UIAlertView alloc]initWithTitle:@"Network Found" message:@"Please Wait Until It is loading" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alertNetFound show];
}else{
UIAlertView *alertNetNotFound = [[UIAlertView alloc]initWithTitle:@"No Internet" message:@"Please Check Your Internet Connection Honey" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alertNetNotFound show];
}
}];
.
だから、この場合はデバイスがネットワークに接続するたびに、最初にスタートモニタリングプロセスを実行し、その後ステータスブロックにヒットし、ステータスに従ってアラートを表示します。
ステータスブロックのアラートを置き換えることで、選択に従って何でもすることができます。私はこれを使用してローカルストレージから自動的にウェブページをロードしますが、そのコードを簡単にするために削除しました。
私のシミュレータとMac Miniを操作しています。
ありがとう
これが助けたことを願っています。
私はアプリの代わりにこれを使います - >
func reachablityCode() {
AFNetworkReachabilityManager.sharedManager()
AFNetworkReachabilityManager.sharedManager().startMonitoring()
AFNetworkReachabilityManager.sharedManager().setReachabilityStatusChangeBlock({(status) in
let defaults = NSUserDefaults.standardUserDefaults()
if status == .NotReachable {
defaults.setBool(false, forKey:REACHABLE_KEY)
}
else {
defaults.setBool(false, forKey: REACHABLE_KEY)
}
defaults.synchronize()
})
}
.
とこれは基本ファイルに - >
func isReachable() -> Bool {
return NSUserDefaults.standardUserDefaults().boolForKey(REACHABLE_KEY)
}
.