zoukankan      html  css  js  c++  java
  • 【代码笔记】iOS-网络嗅探

    一,效果图。

    二,工程图。

    三,代码。

    AppDelegate.h

    复制代码
    #import <UIKit/UIKit.h>
    #import "Reachability.h"
    
    @interface AppDelegate : UIResponder <UIApplicationDelegate>
    {
         Reachability *reachability;
         BOOL WarningViaWWAN;
    }
    
    @property (strong, nonatomic) UIWindow *window;
    
    
    - (void)ReachabilitySniff:(Reachability*) curReach;
    - (void)ReachabilitySniffNotification:(NSNotification* )notification;
    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;
    
    @end
    复制代码

     

    AppDelegate.m

    复制代码
    #import "AppDelegate.h"
    #import "RootViewController.h"
    
    @implementation AppDelegate
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        // Override point for customization after application launch.
        
        RootViewController *rootVC=[[RootViewController alloc]init];
        UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:rootVC];
        self.window.rootViewController=nav;
        
        
        //启动网络嗅探功能
        WarningViaWWAN = TRUE;
        
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(ReachabilitySniffNotification:) name:kReachabilityChangedNotification object:nil];
        
        if (!reachability) {
            reachability = [Reachability reachabilityForInternetConnection];
        }
        [reachability startNotifier];
        
        [self performSelector:@selector(ReachabilitySniff:) withObject:reachability afterDelay:20];
    
        
        
        
        self.window.backgroundColor = [UIColor whiteColor];
        [self.window makeKeyAndVisible];
        return YES;
    }
    #pragma mark -网络嗅探
    - (void)ReachabilitySniffNotification:(NSNotification* )notification
    {
        Reachability* curReach = [notification object];
        [self performSelector:@selector(ReachabilitySniff:) withObject:curReach afterDelay:2];
    }
    
    - (void)ReachabilitySniff:(Reachability*) curReach
    {
        NSLog(@"ReachabilitySniffNewWorkStatus");
        if (!curReach) {
            return;
        }
        NetworkStatus status = [curReach currentReachabilityStatus];
        switch (status) {
            case ReachableViaWiFi:
            {
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"您正在使用WiFi网络" message:Nil delegate:self cancelButtonTitle:Nil otherButtonTitles:@"本次不再提醒",@"知道了", nil];
                [alert show];
                break;
            }
            case ReachableViaWWAN:
            {
                 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"您正在使用移动网络,运营商会收取流量费,建议使用WiFi网络" message:Nil delegate:self cancelButtonTitle:Nil otherButtonTitles:@"本次不再提醒",@"知道了", nil];
                    [alert show];
                 break;
            }
            case NotReachable:
            {
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"没有网络" message:Nil delegate:self cancelButtonTitle:Nil otherButtonTitles:@"本次不再提醒",@"知道了", nil];
                [alert show];
                break;
            }
        }
    }
    复制代码

     

  • 相关阅读:
    分布式文件系统-glusterfs
    Centos7防火墙使用
    Centos7使用Python3
    ldap认证服务的搭建
    kafka使用
    Python基本数据类型
    Linux 内核参数优化
    MHA+atlas(数据库的高可用与读写分离)
    插槽(slot)
    常用组件通信方式
  • 原文地址:https://www.cnblogs.com/yang-guang-girl/p/5602484.html
Copyright © 2011-2022 走看看