iOS Question Class to get internet connection availability and type

Discussion in 'iOS Questions' started by hatzisn, Dec 22, 2018.

  1. hatzisn

    hatzisn Active Member Licensed User

    Hi everybody,

    While waiting for a possible solution in the issue I am facing with b4i-bridge in which I cannot connect as seen in the previous post to save me some time I tried to create the following class. Could someone with more knowledge in Objective C correct the code of this class I created by sewing different examples so that it works and return if the internet is connected and what type of connection there is... (I tried to compile it with hosted builder and I get an error about reachability.h as to compile it there is no need for b4i-bridge - by the way any help on the b4i-bridge issue will be highly appreciated).

    Original code can be found in:
    https://stackoverflow.com/questions/7938650/ios-detect-3g-or-wifi

    Code of class:

    Code:
    Sub Class_Globals
     
    End Sub

    'Initializes the object. You can add parameters to this method if needed.
    Public Sub Initialize
     
    End Sub

    Public Sub GetConnectionState() As String
        
    Dim no As NativeObject
        no = Me
        
    Return no.RunMethod("getConn"Null)
    End Sub

    #IF OBJC


    - (NSString *) getConn: {

        #import "Reachability.h"
        #import <CoreTelephony/CTTelephonyNetworkInfo.h>

        Reachability *reachability = [Reachability reachabilityForInternetConnection];
        [reachability startNotifier];

        NetworkStatus status = [reachability currentReachabilityStatus];

        if(status == NotReachable)
        {
           return @"none";
            //No internet
        }
        else if (status == ReachableViaWiFi)
        {
            return @"Wifi";
            //WiFi
        }
        else if (status == ReachableViaWWAN)
        {

        //connection type
        CTTelephonyNetworkInfo *netinfo = [[CTTelephonyNetworkInfo alloc] init];
        _carrier = [[netinfo subscriberCellularProvider] carrierName];

        if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyGPRS]) {
            return @"2G";
        } else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyEdge]) {
            return @"2G";
        } else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyWCDMA]) {
            return @"3G";
        } else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyHSDPA]) {
            return @"3G";
        } else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyHSUPA]) {
            return @"3G";
        } else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMA1x]) {
            return @"2G";
        } else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORev0]) {
            return @"3G";
        } else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORevA]) {
            return @"3G";
        } else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORevB]) {
            return @"3G";
        } else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyeHRPD]) {
            return @"3G";
        } else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyLTE]) {
            return @"4G";
        }

        }

    }

    #End If
     
    Last edited: Dec 22, 2018
  2. Jamie8763

    Jamie8763 Active Member Licensed User

    hatzisn likes this.
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice