আইওএস বা ম্যাকোসে সক্রিয় ইন্টারনেট সংযোগের জন্য কীভাবে চেক করবেন?


1324

আমি কোকো টাচ লাইব্রেরি ব্যবহার করে আইওএসে বা কোকো লাইব্রেরি ব্যবহার করে ম্যাকোজে কোনও ইন্টারনেট সংযোগ আছে কিনা তা দেখতে আমি দেখতে চাই ।

আমি এটি ব্যবহার করে এটি করার একটি উপায় নিয়ে এসেছি NSURL। যেভাবে আমি এটি করেছি তা কিছুটা অবিশ্বাস্য বলে মনে হচ্ছে (কারণ এমনকি গুগলও একদিন নীচে নেমে তৃতীয় পক্ষের উপর নির্ভর করতে পারে খারাপ মনে হয়), এবং গুগল কোনও প্রতিক্রিয়া না জানালে আমি অন্য কয়েকটি ওয়েবসাইটের প্রতিক্রিয়া দেখতে চেক করতে পারি, এটি আমার অ্যাপ্লিকেশনটিতে অপব্যয় এবং অপ্রয়োজনীয় ওভারহেড মনে হচ্ছে।

- (BOOL) connectedToInternet
{
    NSString *URLString = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.google.com"]];
    return ( URLString != NULL ) ? YES : NO;
}

আমি কি খারাপ কাজ করেছি, ( stringWithContentsOfURLআইওএস 3.0 এবং ম্যাকোস 10.4 এ অবহিত নয়) এবং যদি তা হয় তবে এটি সম্পাদন করার আরও ভাল উপায় কী?


11
বরং return (BOOL)URLString;, বা আরও ভাল, return !!URLStringবাreturn URLString != nil

3
আপনার ব্যবহারের ক্ষেত্রে কী তা আমি জানি না, তবে আপনি যদি অনুরোধটি চেষ্টা করে দেখতে পারেন এবং সংযোগের অভাবের মতো যে কোনও ত্রুটি দেখা দেয় তবে তা পরিচালনা করা ভাল। যদি আপনি এটি করতে না পারেন, তবে এই ক্ষেত্রে এখানে প্রচুর ভাল পরামর্শ রয়েছে।
এসকে 9

2
আপনার সমাধানটি চতুর, এবং আমি এটি পছন্দ করি। NSString *URLString = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"https://twitter.com/getibox"] encoding:NSUTF8StringEncoding error:nil];বিরক্তিকর সতর্কতা থেকে মুক্তি পেতে আপনি ব্যবহার করতে পারেন।
আবদুলারহমান Eidদ

4
নীচের লিঙ্কটি থেকে পুনঃনির্মাণের ক্লাসটি ব্যবহার করে দেখুন, এটি আপনার পক্ষে
ধাওয়াল এইচ। নেনা

4
: তাদের জন্য সম্প্রতি এই উত্তর খোঁজার stackoverflow.com/a/8813279
afollestad

উত্তর:


1284

গুরুত্বপূর্ণ : এই চেকটি সর্বদা অবিচ্ছিন্নভাবে করা উচিত । নীচের উত্তরগুলির বেশিরভাগই সমকালীন তাই সাবধানতা অবলম্বন করুন অন্যথায় আপনি আপনার অ্যাপ্লিকেশন স্থির করে দেবেন।


দ্রুতগতি

1) কোকোপডস বা কার্থেজের মাধ্যমে ইনস্টল করুন: https://github.com/ashleymills/Reachability.swift

2) ক্লোজারগুলির মাধ্যমে পরীক্ষার পুনঃব্যবহারযোগ্যতা

let reachability = Reachability()!

reachability.whenReachable = { reachability in
    if reachability.connection == .wifi {
        print("Reachable via WiFi")
    } else {
        print("Reachable via Cellular")
    }
}

reachability.whenUnreachable = { _ in
    print("Not reachable")
}

do {
    try reachability.startNotifier()
} catch {
    print("Unable to start notifier")
}

উদ্দেশ্য গ

1) SystemConfigurationপ্রকল্পে কাঠামো যুক্ত করুন তবে এটি কোথাও অন্তর্ভুক্ত করার বিষয়ে চিন্তা করবেন না

2) টনি মিলিয়ন এর সংস্করণ যোগ করুন Reachability.hএবং Reachability.mপ্রকল্প (এখানে পাওয়া গেছে: https://github.com/tonymillion/Reachability )

3) ইন্টারফেস বিভাগ আপডেট করুন

#import "Reachability.h"

// Add this to the interface in the .m file of your view controller
@interface MyViewController ()
{
    Reachability *internetReachableFoo;
}
@end

4) তারপরে আপনার ভিউ কন্ট্রোলারের যা। আপনি কল করতে পারেন তার .m ফাইলে এই পদ্ধতিটি প্রয়োগ করুন

// Checks if we have an internet connection or not
- (void)testInternetConnection
{   
    internetReachableFoo = [Reachability reachabilityWithHostname:@"www.google.com"];

    // Internet is reachable
    internetReachableFoo.reachableBlock = ^(Reachability*reach)
    {
        // Update the UI on the main thread
        dispatch_async(dispatch_get_main_queue(), ^{
            NSLog(@"Yayyy, we have the interwebs!");
        });
    };

    // Internet is not reachable
    internetReachableFoo.unreachableBlock = ^(Reachability*reach)
    {
        // Update the UI on the main thread
        dispatch_async(dispatch_get_main_queue(), ^{
            NSLog(@"Someone broke the internet :(");
        });
    };

    [internetReachableFoo startNotifier];
}

গুরুত্বপূর্ণ নোট:Reachability তাই আপনি অন্যান্য উইকিগুলো সাথে সঙ্ঘাত নামকরণ পড়তে পারেন বর্গ প্রকল্পে সর্বাধিক ব্যবহৃত শ্রেণীর অন্যতম। যদি এটি ঘটে থাকে তবে সমস্যাটি সমাধানের জন্য আপনাকে জোড়া Reachability.hএবং Reachability.mফাইলগুলির একটির নতুন নামকরণ করতে হবে ।

দ্রষ্টব্য: আপনি যে ডোমেনটি ব্যবহার করেন তাতে কিছু আসে যায় না। এটি কেবল যে কোনও ডোমেনের গেটওয়ের পরীক্ষার জন্য।


4
@gonzobrains: আপনি যে ডোমেনটি ব্যবহার করেন তাতে কিছু আসে যায় না। এটি কেবল যে কোনও ডোমেনের গেটওয়ের পরীক্ষার জন্য ।
আইওয়াসরোব্বড

3
@ কানডেদেগলু এটি একটি উদাহরণ, আপনি যে ডোমেইনটি চান তা ব্যবহার করুন। এটি কেবলমাত্র ইন্টারনেটের প্রবেশদ্বারটি পরীক্ষা করে, ডোমেনটি আসলে উপলব্ধ না।
iwasrobbed

1
ওহ, বিটিডব্লিউ আপনাকেও SystemConfiguration.frameworkপ্রকল্পে যুক্ত করতে হবে (পদ্ধতি 1)।
বুদ্ধিমানের

2
Google.com এর পরিবর্তে www.appleiphonecell.com ব্যবহার করুন - এই url আপেল দ্বারা স্পষ্টতই এই কারণে তৈরি করা হয়েছিল।
স্মিিকে

1
Www.appleiphonecell.com এর ব্যবহার এখন (2018) একটি খারাপ পছন্দ। এটি এখন অ্যাপল ডটকমকে পুনর্নির্দেশ করে যা একটি> 40 কেবি এইচটিএমএল ফাইল। Google.com এ ফিরে যান - এটি কেবল 11 কেবি। বিটিডাব্লু google.com/m একই আকারের তবে 120 ম্যাস্কের চেয়ে ধীর বলে জানা গেছে।
ব্লুস্কেমেড

310

আমি জিনিসগুলি সহজ রাখতে পছন্দ করি। আমি এটি করার উপায়টি হ'ল:

//Class.h
#import "Reachability.h"
#import <SystemConfiguration/SystemConfiguration.h>

- (BOOL)connected;

//Class.m
- (BOOL)connected
{
    Reachability *reachability = [Reachability reachabilityForInternetConnection];
    NetworkStatus networkStatus = [reachability currentReachabilityStatus];
    return networkStatus != NotReachable;
}

তারপরে, আমি যখনই আমার কোনও সংযোগ আছে কিনা তা দেখতে চাইলে এটি ব্যবহার করি:

if (![self connected]) {
    // Not connected
} else {
    // Connected. Do some Internet stuff
}

এই পদ্ধতিটি স্টাফ করার জন্য পরিবর্তিত নেটওয়ার্ক স্ট্যাটাসের জন্য অপেক্ষা করে না। আপনি যখন এটি জিজ্ঞাসা করেন তখন এটি কেবল স্থিতি পরীক্ষা করে।


হাই @ এমসিসি, আপনি এই পৃষ্ঠায় অ্যান্ড্রু জিমার সমাধানটি দেখতে পারেন, এটি অ্যাডসেল সংযোগ বিচ্ছিন্ন (এবং ওয়াইফাই সংযুক্ত) দিয়ে কাজ করে
উইলিউ

1
তাদের জন্য যারা উপরের কোডটি দিয়েছি কেবল কপি এবং পেস্ট করুন। এছাড়াও ম্যানুয়ালি সিস্টেম কনফিগারেশন.ফ্রেমওয়ার্ক যুক্ত করুন বা লিঙ্কিং ত্রুটি পাবেন।
ইফতিখার আলী আনসারী

আমি যদি ওয়াইফাইয়ের সাথে সংযোগ করি তবে সর্বদা পৌঁছনীয় হিসাবে উপস্থিত হন। ওয়াইফাই এর অর্থ এই নয় যে এটিতে ইন্টারনেট সংযোগ রয়েছে। আমি ইন্টারনেট সংযোগ যাচাই করতে চাই এমনকি এটিতে ওয়াইফাই সংযোগ রয়েছে। আপনি কি আমাকে সাহায্য করতে পারেন?
ওয়েসলি

@ ওয়েসলি আপনি কীভাবে সমাধান করেছেন?
কেসেলমে

145

অ্যাপলের পুনঃব্যবহারযোগ্যতা কোডটি ব্যবহার করে, আমি একটি ফাংশন তৈরি করেছি যা আপনাকে কোনও ক্লাস অন্তর্ভুক্ত না করে এটিকে সঠিকভাবে যাচাই করবে।

আপনার প্রকল্পে সিস্টেম কনফিগারেশন.ফ্রেমওয়ার্ক অন্তর্ভুক্ত করুন।

কিছু আমদানি করুন:

#import <sys/socket.h>
#import <netinet/in.h>
#import <SystemConfiguration/SystemConfiguration.h>

এখন কেবল এই ফাংশনটি কল করুন:

/*
Connectivity testing code pulled from Apple's Reachability Example: https://developer.apple.com/library/content/samplecode/Reachability
 */
+(BOOL)hasConnectivity {
    struct sockaddr_in zeroAddress;
    bzero(&zeroAddress, sizeof(zeroAddress));
    zeroAddress.sin_len = sizeof(zeroAddress);
    zeroAddress.sin_family = AF_INET;

    SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr*)&zeroAddress);
    if (reachability != NULL) {
        //NetworkStatus retVal = NotReachable;
        SCNetworkReachabilityFlags flags;
        if (SCNetworkReachabilityGetFlags(reachability, &flags)) {
            if ((flags & kSCNetworkReachabilityFlagsReachable) == 0)
            {
                // If target host is not reachable
                return NO;
            }

            if ((flags & kSCNetworkReachabilityFlagsConnectionRequired) == 0)
            {
                // If target host is reachable and no connection is required
                //  then we'll assume (for now) that your on Wi-Fi
                return YES;
            }


            if ((((flags & kSCNetworkReachabilityFlagsConnectionOnDemand ) != 0) ||
                 (flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0))
            {
                // ... and the connection is on-demand (or on-traffic) if the
                //     calling application is using the CFSocketStream or higher APIs.

                if ((flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0)
                {
                    // ... and no [user] intervention is needed
                    return YES;
                }
            }

            if ((flags & kSCNetworkReachabilityFlagsIsWWAN) == kSCNetworkReachabilityFlagsIsWWAN)
            {
                // ... but WWAN connections are OK if the calling application
                //     is using the CFNetwork (CFSocketStream?) APIs.
                return YES;
            }
        }
    }

    return NO;
}

এবং এটি আইওএস 5 আপনার জন্য পরীক্ষিত।


@ জিজেনথোমাস এটি ইন্টারনেট চেককে তাত্পর্যপূর্ণভাবে সম্পাদন করে না, এ কারণেই এটি "অনেক বেশি স্লিমার" ... আপনার সর্বদা বিজ্ঞপ্তিগুলিতে সাবস্ক্রাইব করে এই সংশ্লেষ্যভাবে করা উচিত যাতে আপনি এই প্রক্রিয়াটিতে অ্যাপ্লিকেশনটি আটকে না ফেলে।
iwasrobbed

ধন্যবাদ, আপনি ওয়াইফাই অ্যাডসেল ব্যবহার করছেন এবং অ্যাডসেল সংযুক্ত না থাকলেও এই কাজটি আমার প্রয়োজন ঠিক এটি।
উইলিউজ

5
এই মেমোরি ফাঁস করে - 'পাঠযোগ্যতা' কাঠামো (বস্তু, জিনিস) সিএফআরিলিজ () দিয়ে মুক্ত করা দরকার।
রাসেল মুল

@ রাসেলমুল ... ফাঁস ঠিক করবেন কীভাবে ধারণা?
i_raqz

অদ্ভুত যে এই উত্তরটি আমার 2 বছর দ্বারা (নকল হিসাবে চিহ্নিত একটি প্রশ্নের উপর) পূর্বাভাস দিয়েছে, আমার মতোই এটি একই, তবে আমি আজ পর্যন্ত কখনও দেখিনি।
আর্টঅফ ওয়ারফেয়ার

121

এটি সঠিক উত্তর হিসাবে ব্যবহৃত হত, তবে এটি এখন পুরানো হয়েছে কারণ পরিবর্তে পুনরায়াব্যাবহারের জন্য আপনার বিজ্ঞপ্তিগুলি সাবস্ক্রাইব করা উচিত। এই পদ্ধতিটি সুসংগতভাবে পরীক্ষা করে:


আপনি অ্যাপলের রি্যাক্যাবিলিটি ক্লাসটি ব্যবহার করতে পারেন। এটি আপনাকে ওয়াই-ফাই সক্ষম কিনা তা যাচাই করার অনুমতি দেবে:

Reachability* reachability = [Reachability sharedReachability];
[reachability setHostName:@"www.example.com"];    // Set your host name here
NetworkStatus remoteHostStatus = [reachability remoteHostStatus];

if (remoteHostStatus == NotReachable) { }
else if (remoteHostStatus == ReachableViaWiFiNetwork) { }
else if (remoteHostStatus == ReachableViaCarrierDataNetwork) { }

Reachability বর্গ SDK এর সঙ্গে জাহাজে হয় না, বরং এর একটি অংশ এই অ্যাপল নমুনা আবেদন । কেবল এটি ডাউনলোড করুন, এবং আপনার প্রকল্পে পুনঃব্যবস্থাপনা / মিটার অনুলিপি করুন। এছাড়াও, আপনাকে আপনার প্রকল্পে সিস্টেম কনফিগারেশন ফ্রেমওয়ার্ক যুক্ত করতে হবে।


6
এর মতো পুনঃব্যবহারযোগ্যতা না ব্যবহার করার বিষয়ে উপরে আমার মন্তব্য দেখুন। এটি অ্যাসিক্রোনাস মোডে ব্যবহার করুন এবং এটি প্রেরিত বিজ্ঞপ্তিগুলিতে সাবস্ক্রাইব করুন - করবেন না।
কেন্ডাল হেলস্টেটার জেলনার

এই কোডটি সেই বিষয়গুলির জন্য একটি ভাল সূচনা পয়েন্ট যা আপনি পুনঃব্যবহারযোগ্যতা বর্গের জন্য ডেলিগেট পদ্ধতিগুলি ব্যবহার করার আগে আপনাকে সেট করতে হবে।
ব্রুক উলফ

82

এখানে একটি খুব সহজ উত্তর:

NSURL *scriptUrl = [NSURL URLWithString:@"http://www.google.com/m"];
NSData *data = [NSData dataWithContentsOfURL:scriptUrl];
if (data)
    NSLog(@"Device is connected to the Internet");
else
    NSLog(@"Device is not connected to the Internet");

URL টি একটি খুব ছোট ওয়েবসাইটের দিকে নির্দেশ করা উচিত। আমি এখানে গুগলের মোবাইল ওয়েবসাইট ব্যবহার করি তবে আমার যদি নির্ভরযোগ্য ওয়েব সার্ভার থাকে তবে আমি সর্বাধিক গতির জন্য একটি অক্ষরযুক্ত একটি ছোট ফাইল আপলোড করতাম ।

ডিভাইসটি কোনওভাবেই ইন্টারনেটের সাথে সংযুক্ত কিনা আপনি যা করতে চান তা যদি পরীক্ষা করা হয়, তবে আমি অবশ্যই এই সহজ সমাধানটি ব্যবহার করার পরামর্শ দেব। আপনার যদি ব্যবহারকারীটি কীভাবে সংযুক্ত রয়েছে তা জানতে প্রয়োজন, পুনঃব্যবহারযোগ্যতা ব্যবহার করা উপায়।

যত্নশীল: এটি ওয়েবসাইটটি লোড করার সময় এটি আপনার থ্রেডটি সংক্ষেপে অবরুদ্ধ করবে। আমার ক্ষেত্রে, এটি কোনও সমস্যা ছিল না, তবে আপনার এটি বিবেচনা করা উচিত (এটি নির্দেশ করার জন্য ব্র্যাডের ক্রেডিট)।


10
আমি এই ধারণাটি সত্যিই পছন্দ করি তবে আমি একটি ছোট প্রতিক্রিয়া আকার বজায় রেখে 99.999% নির্ভরযোগ্যতার জন্য বলতে চাই, www.google.com/m এর সাথে যান যা গুগলের জন্য মোবাইল ভিউ।
rwyland

1
অসাধারণ সমাধান @ এরিক। Rwyland যেমন বলেছিল, আমি আপনাকে যা প্রস্তাব দিচ্ছি তা হল www.google.com ব্যবহারের পরিবর্তে www.google.com ব্যবহার করা। এটি অদ্ভুত, তবে আমার পরীক্ষা থেকে মোবাইল সংস্করণটি সর্বদা www.google.com এর চেয়ে প্রায় 120 মিমি বেশি নেয়
Sebyddd

4
অ্যাপল ডক্স এটি না করার পরামর্শ দেয় কারণ এটি ধীরে ধীরে নেটওয়ার্কে থ্রেডটি ব্লক করতে পারে, আইওএস
ব্র্যাড থমাস

ইতিবাচক প্রতিক্রিয়ার জন্য ধন্যবাদ, সম্মত হন যে বিশ্বস্ততার কারণে www.google.com/mই সেরা সমাধান!
এরিক

3
LOL, আমি নিশ্চিত যে লোকেরা এগুলিকে ইন্টারনেট চেক সংস্থান হিসাবে ব্যবহার করার পরামর্শ দিয়ে Google আপনাকে প্রশংসা করে।
এমএক্সসিএল

73

আমি আমার অ্যাপ্লিকেশনগুলিতে এটি কীভাবে করব তা এখানে: 200 স্থিতির প্রতিক্রিয়া কোড কোনও কিছুর গ্যারান্টি দেয় না, এটি আমার পক্ষে যথেষ্ট স্থিতিশীল। এখানে পোস্ট করা এনএসডাটা উত্তরগুলির মতো এর জন্য এত লোডিংয়ের দরকার নেই, যেমন আমার কেবল হেড প্রতিক্রিয়া পরীক্ষা করে।

সুইফট কোড

func checkInternet(flag:Bool, completionHandler:(internet:Bool) -> Void)
{
    UIApplication.sharedApplication().networkActivityIndicatorVisible = true

    let url = NSURL(string: "http://www.google.com/")
    let request = NSMutableURLRequest(URL: url!)

    request.HTTPMethod = "HEAD"
    request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData
    request.timeoutInterval = 10.0

    NSURLConnection.sendAsynchronousRequest(request, queue:NSOperationQueue.mainQueue(), completionHandler:
    {(response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in

        UIApplication.sharedApplication().networkActivityIndicatorVisible = false

        let rsp = response as! NSHTTPURLResponse?

        completionHandler(internet:rsp?.statusCode == 200)
    })
}

func yourMethod()
{
    self.checkInternet(false, completionHandler:
    {(internet:Bool) -> Void in

        if (internet)
        {
            // "Internet" aka Google URL reachable
        }
        else
        {
            // No "Internet" aka Google URL un-reachable
        }
    })
}

উদ্দেশ্য-সি কোড

typedef void(^connection)(BOOL);

- (void)checkInternet:(connection)block
{
    NSURL *url = [NSURL URLWithString:@"http://www.google.com/"];
    NSMutableURLRequest *headRequest = [NSMutableURLRequest requestWithURL:url];
    headRequest.HTTPMethod = @"HEAD";

    NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration ephemeralSessionConfiguration];
    defaultConfigObject.timeoutIntervalForResource = 10.0;
    defaultConfigObject.requestCachePolicy = NSURLRequestReloadIgnoringLocalAndRemoteCacheData;

    NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration:defaultConfigObject delegate:self delegateQueue: [NSOperationQueue mainQueue]];

    NSURLSessionDataTask *dataTask = [defaultSession dataTaskWithRequest:headRequest
        completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
    {
        if (!error && response)
        {
            block([(NSHTTPURLResponse *)response statusCode] == 200);
        }
    }];
    [dataTask resume];
}

- (void)yourMethod
{
    [self checkInternet:^(BOOL internet)
    {
         if (internet)
         {
             // "Internet" aka Google URL reachable
         }
         else
         {
             // No "Internet" aka Google URL un-reachable
         }
    }];
}

3
দেখে মনে হচ্ছে এটি সবচেয়ে দ্রুততম উপায়
পাভেল

3
সতর্কতা: আমার অভিজ্ঞতায়, এই সমাধানটি সর্বদা কার্যকর হয় না। বেশিরভাগ ক্ষেত্রে প্রতিক্রিয়াটি তার মিষ্টি সময়টি গ্রহণের পরে, 403 হয়। এই সমাধানটি নিখুঁত বলে মনে হয়েছিল তবে 100% ফলাফলের গ্যারান্টি দেয় না।
মোস্তফা

10
২০১৪ সালের জুন পর্যন্ত, চীনা সরকার এখন গুগল ডটকমকে সম্পূর্ণরূপে অবরুদ্ধ করার কারণে এটি মূল ভূখণ্ড চীনতে ব্যর্থ হবে। (গুগল.এন.এন, যদিও কাজ করে তবে মূল ভূখণ্ডের চীন, কোনও বাইডু ডটকম, ইন্টারনেট নেই) আপনার যে কোনও সার্ভারের সাথে যোগাযোগের প্রয়োজন তা পিং করা ভাল।
প্রিভিট

4
পরিবর্তে www.appleiphonecell.com ব্যবহার করুন - আপেল ঠিক এই কারণে এই url তৈরি করেছে।
স্মিিকে

1
আমি অ্যাপলফোনসেল ব্যবহার করেছি এটি অ্যাপলের নিজস্ব হিসাবে ব্যবহার করেছি, চীনেও ব্যবহার করা যেতে পারে এবং এটি একটি খুব দ্রুত ওয়েবসাইট website এটি, আপনার উত্তরের সাথে একত্রে আমাকে নিকটতম এবং দ্রুততম সমাধান সরবরাহ করেছে। আপনাকে ধন্যবাদ
সেপ্টেম্বর

57

অ্যাপল বিভিন্ন ধরণের নেটওয়ার্কের উপলব্ধতার জন্য নমুনা কোড সরবরাহ করে । বিকল্পভাবে আইফোন বিকাশকারীদের কুকবুকে একটি উদাহরণ রয়েছে।

দ্রষ্টব্য: অ্যাপলের পুনঃব্যবহারযোগ্যতা কোড ব্যবহারের বিষয়ে দয়া করে এই উত্তরে @ কেএইচজির মন্তব্য দেখুন।


ধন্যবাদ। আমি আবিষ্কার করেছি যে 3.0 এ থাকা Xcode ডকুমেন্টেশনে সোর্স কোডও রয়েছে, যা ডকুমেন্টেশনে "পুনঃব্যবহারযোগ্যতা" অনুসন্ধান করে পাওয়া গেছে।
ব্রুক ওলফ

7
নোট করুন যে অ্যাপল থেকে পুনঃব্যবস্থাপনা নমুনা কোডের নতুন সংশোধন (09-08-09) অ্যাসিঙ্ক্রোনাস।
ড্যানিয়েল হিপার

46

আপনি Reachabilityby দ্বারা ব্যবহার করতে পারেন ( এখানে উপলব্ধ )।

#import "Reachability.h"

- (BOOL)networkConnection {
    return [[Reachability reachabilityWithHostName:@"www.google.com"] currentReachabilityStatus];
}

if ([self networkConnection] == NotReachable) { /* No Network */ } else { /* Network */ } //Use ReachableViaWiFi / ReachableViaWWAN to get the type of connection.

@ সুপেরেকনোবফ না, এটি অসম্পূর্ণ।
আলেকসান্দার আজিজি

39

অ্যাপল একটি নমুনা অ্যাপ্লিকেশন সরবরাহ করে যা ঠিক এটি করে:

Reachability


7
আপনার অবশ্যই লক্ষ্য করা উচিত যে পুনঃপ্রকাশের নমুনাটি কেবল ইন্টারফেসগুলি সক্রিয় তা সনাক্ত করে তবে কোনটির সাথে ইন্টারনেটের সাথে বৈধ সংযোগ রয়েছে তা নয়। অ্যাপলিকেশনগুলি চূড়ান্তভাবে ব্যর্থতা সামলানো উচিত এমনকি যখন পুনর্ব্যবহারযোগ্যতা জানায় যে সবকিছু যেতে প্রস্তুত।
রাপেরিচ

সুখের বিষয় হল 3.0 এ পরিস্থিতি অনেক ভাল, কারণ সিস্টেমটি লকডাউন ওয়াইফাইয়ের পিছনে ব্যবহারকারীদের জন্য লগইন পৃষ্ঠা উপস্থাপন করবে যেখানে আপনাকে ব্যবহার করতে লগইন করতে হবে ... আপনাকে ম্যানুয়ালি পুনঃনির্দেশের জন্য পরীক্ষা করতে হবে (এবং আপনি এখনও করেন যদি ২.২.১ অ্যাপ্লিকেশন বিকাশ করা হয়)
কেন্ডাল হেলস্টেটার জেলনার

আমি বলব না যে রিচ্যাবিলিটি অ্যাপটি যা অনুরোধ করেছে ঠিক তাই করে। তবে যে ধরণের কার্যকারিতা জিজ্ঞাসা করা হয়েছে এটি যুক্ত করার জন্য এটি একটি ভাল সূচনার পয়েন্ট,
জোহান কার্লসন

ভাঙা লিঙ্ক !, যদি এটি চেক / ঠিক করা যায় তবে প্রশংসা হবে, অনেক ধন্যবাদ
হায়দার সতী

33

কেবল পুনঃব্যবস্থাযোগ্য শ্রেণি আপডেট করা হয়েছে। আপনি এখন ব্যবহার করতে পারেন:

Reachability* reachability = [Reachability reachabilityWithHostName:@"www.apple.com"];
NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus];

if (remoteHostStatus == NotReachable) { NSLog(@"not reachable");}
else if (remoteHostStatus == ReachableViaWWAN) { NSLog(@"reachable via wwan");}
else if (remoteHostStatus == ReachableViaWiFi) { NSLog(@"reachable via wifi");}

1
৪.০ প্রকাশের পর থেকে কিছু পরিবর্তন না করা অবধি সেই কোডটি অবিচ্ছিন্ন নয় এবং এটি ক্র্যাশ প্রতিবেদনগুলিতে প্রদর্শিত হওয়ার নিশ্চয়তা আপনি পেয়েছেন - আমার আগে ঘটেছিল।
বিপাপা

1
আমি বাপ্পার সাথে একমত সিঙ্ক্রোনাস কোড ব্যবহার করা ভাল ধারণা নয়। তথ্যের জন্য ধন্যবাদ
ব্রোক উলফ


25

এখানে একটি সুদর্শন, এআরসি- এবং জিসিডি-ব্যবহারযোগ্য পুনর্ব্যবহারযোগ্যতার আধুনিকীকরণ রয়েছে:

Reachability


22

আপনি যদি ব্যবহার করছেন তবে আপনি AFNetworkingইন্টারনেট পুনরায় ব্যবহারযোগ্যতার স্থিতির জন্য এর নিজস্ব প্রয়োগটি ব্যবহার করতে পারেন।

ব্যবহার করার সর্বোত্তম উপায় AFNetworkingহ'ল সাবক্লাসটিAFHTTPClient ক্লাসটি এবং এই নেটওয়ার্কটি আপনার নেটওয়ার্ক সংযোগগুলি করতে ব্যবহার করা।

এই পদ্ধতির ব্যবহারের একটি সুবিধা হ'ল আপনি blocksযখন পুনঃব্যবহারযোগ্যতার স্থিতি পরিবর্তন করেন তখন আপনি পছন্দসই আচরণ সেট করতে ব্যবহার করতে পারেন । ধরা যাক যে আমি নামের একটি সিঙ্গলটন সাবক্লাস তৈরি করেছি AFHTTPClient(যেমন এএফনেটেকিং ডক্সে "সাবক্লাসিং নোটগুলিতে বলা হয়েছে ) BKHTTPClient, আমি এরকম কিছু করব:

BKHTTPClient *httpClient = [BKHTTPClient sharedClient];
[httpClient setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status)
{
    if (status == AFNetworkReachabilityStatusNotReachable) 
    {
    // Not reachable
    }
    else
    {
        // Reachable
    }
}];

আপনি বিশেষত এনাম AFNetworkReachabilityStatusReachableViaWWANএবং AFNetworkReachabilityStatusReachableViaWiFiএনামগুলি ব্যবহার করে ( আরও এখানে ) ওয়াই-ফাই বা ডাব্লুএলএএন সংযোগগুলি পরীক্ষা করতে পারেন ।


18

আমি এই আলোচনায় কোডটি ব্যবহার করেছি এবং এটি ঠিক কাজ করে বলে মনে হচ্ছে ( পুরো থ্রেডটি পড়ুন!)।

আমি এটি প্রতিটি কল্পনাযোগ্য ধরণের সংযোগ (যেমন অ্যাডহক ওয়াই-ফাই) এর সাথে নিখরচায় পরীক্ষা করে দেখিনি।


এই কোডটি পুরোপুরি ভাল নয় কারণ এটি কেবলমাত্র রাউটারের সাথে আপনার ওয়াইফাই সংযোগ আছে কিনা তা পরীক্ষা করে দেখুন, ওয়েবে পৌঁছানো যায় না। আপনার ওয়াইফাই কাজ করতে পারে এবং ওয়েবে পৌঁছাতে সক্ষম রাখতে পারবেন।
ডাকডাকিং

15

খুব সহজ .... এই পদক্ষেপগুলি ব্যবহার করে দেখুন:

পদক্ষেপ 1:SystemConfiguration আপনার প্রকল্পের কাঠামো যুক্ত করুন ।


পদক্ষেপ 2: আপনার headerফাইলটিতে নিম্নলিখিত কোডটি আমদানি করুন।

#import <SystemConfiguration/SystemConfiguration.h>

পদক্ষেপ 3: নিম্নলিখিত পদ্ধতিটি ব্যবহার করুন

  • ধরন 1:

    - (BOOL) currentNetworkStatus {
        [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
        BOOL connected;
        BOOL isConnected;
        const char *host = "www.apple.com";
        SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL, host);
        SCNetworkReachabilityFlags flags;
        connected = SCNetworkReachabilityGetFlags(reachability, &flags);
        isConnected = NO;
        isConnected = connected && (flags & kSCNetworkFlagsReachable) && !(flags & kSCNetworkFlagsConnectionRequired);
        CFRelease(reachability);
        return isConnected;
    }

  • প্রকার 2:

    আমদানি শিরোনাম :#import "Reachability.h"

    - (BOOL)currentNetworkStatus
    {
        Reachability *reachability = [Reachability reachabilityForInternetConnection];
        NetworkStatus networkStatus = [reachability currentReachabilityStatus];
        return networkStatus != NotReachable;
    }

পদক্ষেপ 4: কীভাবে ব্যবহার করবেন:

- (void)CheckInternet
{
    BOOL network = [self currentNetworkStatus];
    if (network)
    {
        NSLog(@"Network Available");
    }
    else
    {
        NSLog(@"No Network Available");
    }
}

টাইপ 1 অ্যাসিক্রোনাস হয়?
সুপারটেকনোবফ

আমি আপনার উত্তর থেকে টাইপ 2 সংশোধন করতে চাই। আমি পুনঃব্যবহারযোগ্যতা ক্লাস যুক্ত করেছি এবং আমি আপনার উত্তরটি উপরে ব্যবহার করে সংযোগ যাচাইকরণ যাচাই করার চেষ্টা করেছি। আমি ওয়াইফাইয়ের সাথে সংযোগ স্থাপন করলেও এটি সর্বদা পৌঁছনীয় তবে এটির ইন্টারনেট সংযোগ নেই। ওয়াইফাই এর অর্থ এই নয় যে এটিতে ইন্টারনেট সংযোগ রয়েছে। আমি ইন্টারনেট সংযোগ যাচাই করতে চাই এমনকি এটিতে ওয়াইফাই সংযোগ রয়েছে। আপনি কি আমাকে সাহায্য করতে পারেন?
ওয়েসলি

12
-(void)newtworkType {

 NSArray *subviews = [[[[UIApplication sharedApplication] valueForKey:@"statusBar"] valueForKey:@"foregroundView"]subviews];
NSNumber *dataNetworkItemView = nil;

for (id subview in subviews) {
    if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) {
        dataNetworkItemView = subview;
        break;
    }
}


switch ([[dataNetworkItemView valueForKey:@"dataNetworkType"]integerValue]) {
    case 0:
        NSLog(@"No wifi or cellular");
        break;

    case 1:
        NSLog(@"2G");
        break;

    case 2:
        NSLog(@"3G");
        break;

    case 3:
        NSLog(@"4G");
        break;

    case 4:
        NSLog(@"LTE");
        break;

    case 5:
        NSLog(@"Wifi");
        break;


    default:
        break;
}
}

7
এমনকি ডিভাইসটি ওয়াইফাই বা অন্য কোনও নেটওয়ার্ক টাইপের সাথে সংযুক্ত থাকলেও ইন্টারনেট সংযোগটি এখনও উপলভ্য হতে পারে না। সাধারণ পরীক্ষা: আপনার হোম ওয়াইফাইয়ের সাথে সংযুক্ত করুন এবং তারপরে আপনার তারের মডেমটি প্লাগ করুন। এখনও ওয়াইফাইয়ের সাথে সংযুক্ত, তবে শূন্য ইন্টারনেট।
14'30 এ iwasrobbed

11
- (void)viewWillAppear:(BOOL)animated
{
    NSString *URL = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.google.com"]];

    return (URL != NULL ) ? YES : NO;
}

বা ব্যবহার করুন রিচ্যাবিলিটি ক্লাস

আইফোন এসডিকে ব্যবহার করে ইন্টারনেটের উপলব্ধতা যাচাই করার দুটি উপায় রয়েছে:

1. গুগল পৃষ্ঠাটি খোলা আছে কিনা তা দেখুন।

2. পুনর্বাসনের ক্লাস

আরও তথ্যের জন্য, অনুগ্রহ করে রিচ্যাবিলিটি (অ্যাপল বিকাশকারী) দেখুন।


1
আইফোন এসডিকে ইন্টারনেটের সহজলভ্যতা যাচাই করার দুটি উপায় রয়েছে 1) গুগল পৃষ্ঠাটি খোলার আছে কিনা তা পরীক্ষা করুন।
আইওএস রকস

1
-1: এটি একটি সিঙ্ক্রোনাস পদ্ধতি যা গুগল ডটকমের সাথে সংযোগ স্থাপনের চেষ্টা করার সময় মূল থ্রেডটিকে (অ্যাপ্লিকেশন ইউআইটি পরিবর্তিত হয়) ব্লক করে দেবে। যদি আপনার ব্যবহারকারী খুব ধীর ডেটা সংযোগে থাকে তবে ফোনটি প্রক্রিয়াটি প্রতিক্রিয়াহীনতার মতো কাজ করবে।
২৩:০৫


10

প্রথম : অ্যাডCFNetwork.framework কাঠামোতে যুক্ত করুন

কোড :ViewController.m

#import "Reachability.h"

- (void)viewWillAppear:(BOOL)animated
{
    Reachability *r = [Reachability reachabilityWithHostName:@"www.google.com"];
    NetworkStatus internetStatus = [r currentReachabilityStatus];

    if ((internetStatus != ReachableViaWiFi) && (internetStatus != ReachableViaWWAN))
    {
        /// Create an alert if connection doesn't work
        UIAlertView *myAlert = [[UIAlertView alloc]initWithTitle:@"No Internet Connection"   message:NSLocalizedString(@"InternetMessage", nil)delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
        [myAlert show];
        [myAlert release];
    }
    else
    {
         NSLog(@"INTERNET IS CONNECT");
    }
}

8

প্রথমে রিএ্যাচিবিলিটি ক্লাসটি ডাউনলোড করুন এবং আপনার এক্সকোডে রিহ্যাবিলিটি। এবং রিহ্যাবিলিটি.এম ফাইলটি রাখুন

সর্বোত্তম উপায় হ'ল একটি সাধারণ ফাংশন ক্লাস (এনএসওজেক্ট) করা যাতে আপনি এটি যে কোনও ক্লাস ব্যবহার করতে পারেন। নেটওয়ার্ক সংযোগ পুনরুদ্ধারযোগ্যতা যাচাইয়ের জন্য এটি দুটি পদ্ধতি:

+(BOOL) reachabiltyCheck
{
    NSLog(@"reachabiltyCheck");
    BOOL status =YES;
    [[NSNotificationCenter defaultCenter] addObserver:self
                                          selector:@selector(reachabilityChanged:)
                                          name:kReachabilityChangedNotification
                                          object:nil];
    Reachability * reach = [Reachability reachabilityForInternetConnection];
    NSLog(@"status : %d",[reach currentReachabilityStatus]);
    if([reach currentReachabilityStatus]==0)
    {
        status = NO;
        NSLog(@"network not connected");
    }
    reach.reachableBlock = ^(Reachability * reachability)
    {
        dispatch_async(dispatch_get_main_queue(), ^{
        });
    };
    reach.unreachableBlock = ^(Reachability * reachability)
    {
        dispatch_async(dispatch_get_main_queue(), ^{
        });
    };
    [reach startNotifier];
    return status;
}

+(BOOL)reachabilityChanged:(NSNotification*)note
{
    BOOL status =YES;
    NSLog(@"reachabilityChanged");
    Reachability * reach = [note object];
    NetworkStatus netStatus = [reach currentReachabilityStatus];
    switch (netStatus)
    {
        case NotReachable:
            {
                status = NO;
                NSLog(@"Not Reachable");
            }
            break;

        default:
            {
                if (!isSyncingReportPulseFlag)
                {
                    status = YES;
                    isSyncingReportPulseFlag = TRUE;
                    [DatabaseHandler checkForFailedReportStatusAndReSync];
                }
            }
            break;
    }
    return status;
}

+ (BOOL) connectedToNetwork
{
    // Create zero addy
    struct sockaddr_in zeroAddress;
    bzero(&zeroAddress, sizeof(zeroAddress));
    zeroAddress.sin_len = sizeof(zeroAddress);
    zeroAddress.sin_family = AF_INET;

    // Recover reachability flags
    SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);
    SCNetworkReachabilityFlags flags;
    BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);
    CFRelease(defaultRouteReachability);
    if (!didRetrieveFlags)
    {
        NSLog(@"Error. Could not recover network reachability flags");
        return NO;
    }
    BOOL isReachable = flags & kSCNetworkFlagsReachable;
    BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired;
    BOOL nonWiFi = flags & kSCNetworkReachabilityFlagsTransientConnection;
    NSURL *testURL = [NSURL URLWithString:@"http://www.apple.com/"];
    NSURLRequest *testRequest = [NSURLRequest requestWithURL:testURL  cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:20.0];
    NSURLConnection *testConnection = [[NSURLConnection alloc] initWithRequest:testRequest delegate:self];
    return ((isReachable && !needsConnection) || nonWiFi) ? (testConnection ? YES : NO) : NO;
}

এখন আপনি এই ক্লাস পদ্ধতিটি কল করে যে কোনও ক্লাসে নেটওয়ার্ক সংযোগ পরীক্ষা করতে পারেন।


8

আইফোন এসডিকে ব্যবহার করে ইন্টারনেট সংযোগ পরীক্ষা করার জন্য আরও একটি পদ্ধতি রয়েছে।

নেটওয়ার্ক সংযোগের জন্য নিম্নলিখিত কোডটি প্রয়োগ করার চেষ্টা করুন।

#import <SystemConfiguration/SystemConfiguration.h>
#include <netdb.h>

/**
     Checking for network availability. It returns
     YES if the network is available.
*/
+ (BOOL) connectedToNetwork
{

    // Create zero addy
    struct sockaddr_in zeroAddress;
    bzero(&zeroAddress, sizeof(zeroAddress));
    zeroAddress.sin_len = sizeof(zeroAddress);
    zeroAddress.sin_family = AF_INET;

    // Recover reachability flags
    SCNetworkReachabilityRef defaultRouteReachability =
        SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);
    SCNetworkReachabilityFlags flags;

    BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);
    CFRelease(defaultRouteReachability);

    if (!didRetrieveFlags)
    {
        printf("Error. Could not recover network reachability flags\n");
        return NO;
    }

    BOOL isReachable = ((flags & kSCNetworkFlagsReachable) != 0);
    BOOL needsConnection = ((flags & kSCNetworkFlagsConnectionRequired) != 0);

    return (isReachable && !needsConnection) ? YES : NO;
}


8
  1. পুনরুদ্ধারযোগ্য ফাইলটি https://gist.github.com/darkseed/1182373 ডাউনলোড করুন

  2. এবং CFNetwork.frameworkফ্রেমওয়ার্কে 'সিস্টেম কনফিগারেশন.ফ্রেমওয়ার্ক' যুক্ত করুন

  3. # পুনর্বারণযোগ্যতা h "করুন"


প্রথম :CFNetwork.framework কাঠামোতে যুক্ত করুন

কোড :ViewController.m

- (void)viewWillAppear:(BOOL)animated
{
    Reachability *r = [Reachability reachabilityWithHostName:@"www.google.com"];
    NetworkStatus internetStatus = [r currentReachabilityStatus];

    if ((internetStatus != ReachableViaWiFi) && (internetStatus != ReachableViaWWAN))
    {
        /// Create an alert if connection doesn't work
        UIAlertView *myAlert = [[UIAlertView alloc]initWithTitle:@"No Internet Connection"   message:NSLocalizedString(@"InternetMessage", nil)delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
        [myAlert show];
        [myAlert release];
    }
    else
    {
         NSLog(@"INTERNET IS CONNECT");
    }
}

8

সুইফট 3 / সুইফট 4

আপনাকে প্রথমে আমদানি করতে হবে

import SystemConfiguration

আপনি নিম্নলিখিত পদ্ধতির সাথে ইন্টারনেট সংযোগ পরীক্ষা করতে পারেন

func isConnectedToNetwork() -> Bool {

    var zeroAddress = sockaddr_in()
    zeroAddress.sin_len = UInt8(MemoryLayout.size(ofValue: zeroAddress))
    zeroAddress.sin_family = sa_family_t(AF_INET)

    let defaultRouteReachability = withUnsafePointer(to: &zeroAddress) {
        $0.withMemoryRebound(to: sockaddr.self, capacity: 1) {zeroSockAddress in
            SCNetworkReachabilityCreateWithAddress(nil, zeroSockAddress)
        }
    }

    var flags = SCNetworkReachabilityFlags()
    if !SCNetworkReachabilityGetFlags(defaultRouteReachability!, &flags) {
        return false
    }
    let isReachable = (flags.rawValue & UInt32(kSCNetworkFlagsReachable)) != 0
    let needsConnection = (flags.rawValue & UInt32(kSCNetworkFlagsConnectionRequired)) != 0
    return (isReachable && !needsConnection)

}

7

Reachability বর্গ খুঁজে বের করতে যদি ইন্টারনেট সংযোগ কোনও ডিভাইসে বা না পাওয়া যায় ঠিক আছে ...

তবে একটি ইন্ট্রানেট সংস্থান অ্যাক্সেসের ক্ষেত্রে :

পুনঃব্যবহারযোগ্যতা শ্রেণীর সাথে ইন্ট্রানেট সার্ভারটি পিং করা সর্বদা সত্য হয়।

সুতরাং এই দৃশ্যের একটি দ্রুত সমাধান pingmeহ'ল পরিষেবাটিতে থাকা অন্যান্য ওয়েবমেডুথদের পাশাপাশি একটি ওয়েব পদ্ধতি তৈরি করা । দ্যpingmeকিছু ফেরত পাঠাবেন।

সুতরাং আমি সাধারণ ফাংশনগুলিতে নিম্নলিখিত পদ্ধতিটি লিখেছি

-(BOOL)PingServiceServer
{
    NSURL *url=[NSURL URLWithString:@"http://www.serveraddress/service.asmx/Ping"];

    NSMutableURLRequest *urlReq=[NSMutableURLRequest requestWithURL:url];

    [urlReq setTimeoutInterval:10];

    NSURLResponse *response;

    NSError *error = nil;

    NSData *receivedData = [NSURLConnection sendSynchronousRequest:urlReq
                                                 returningResponse:&response
                                                             error:&error];
    NSLog(@"receivedData:%@",receivedData);

    if (receivedData !=nil)
    {
        return YES;
    }
    else
    {
        NSLog(@"Data is null");
        return NO;
    }
}

উপরের পদ্ধতিটি আমার পক্ষে এতটাই কার্যকর ছিল, তাই যখনই আমি সার্ভারে কিছু ডেটা প্রেরণের চেষ্টা করি আমি সর্বদা এই স্বল্প সময়ের ইউআরএল অনুসন্ধানটি ব্যবহার করে আমার ইন্ট্রানেট উত্সের পুনঃব্যবহারযোগ্যতা পরীক্ষা করি।


7

এটি নিজের পক্ষে করা খুব সহজ। নিম্নলিখিত পদ্ধতিটি কাজ করবে। কোনও হোস্টনাম প্রোটোকল যেমন এইচটিটিপি, এইচটিটিপিএস, ইত্যাদি নামের সাথে পাস করার অনুমতি না দেওয়ার বিষয়ে নিশ্চিত হন be

-(BOOL)hasInternetConnection:(NSString*)urlAddress
{
    SCNetworkReachabilityRef ref = SCNetworkReachabilityCreateWithName(kCFAllocatorDefault, [urlAddress UTF8String]);
    SCNetworkReachabilityFlags flags;
    if (!SCNetworkReachabilityGetFlags(ref, &flags))
    {
        return NO;
    }
    return flags & kSCNetworkReachabilityFlagsReachable;
}

এটি দ্রুত সহজ এবং বেদাহীন।



7

আমি মনে করি এটি সেরা উত্তর।

"হ্যাঁ" অর্থ সংযুক্ত। "না" অর্থ সংযোগ বিচ্ছিন্ন।

#import "Reachability.h"

 - (BOOL)canAccessInternet
{
    Reachability *IsReachable = [Reachability reachabilityForInternetConnection];
    NetworkStatus internetStats = [IsReachable currentReachabilityStatus];

    if (internetStats == NotReachable)
    {
        return NO;
    }
    else
    {
        return YES;
    }
}

6

Reachable.hআপনার ক্লাস আমদানি করুন ViewControllerএবং সংযোগটি পরীক্ষা করার জন্য নিম্নলিখিত কোডটি ব্যবহার করুন :

     #define hasInternetConnection [[Reachability reachabilityForInternetConnection] isReachable]
     if (hasInternetConnection){
           // To-do block
     }

আপনার উত্তর হ'ল আমি যা অনুসন্ধান করছি। আপনি স্যার
এক্সড

আপনি ইন্টারনেট ছাড়া ওয়াইফাইয়ের সাথে সংযুক্ত থাকলে কাজ করে না।
কেসেলমে

6
  • পদক্ষেপ 1: আপনার প্রকল্পে পুনঃব্যবস্থা ক্লাস যুক্ত করুন।
  • পদক্ষেপ 2: পুনঃব্যবস্থাপনা শ্রেণি আমদানি করুন
  • পদক্ষেপ 3: নীচের ফাংশন তৈরি করুন

    - (BOOL)checkNetConnection {
        self.internetReachability = [Reachability reachabilityForInternetConnection];
        [self.internetReachability startNotifier];
        NetworkStatus netStatus = [self.internetReachability currentReachabilityStatus];
        switch (netStatus) {
            case NotReachable:
            {
                return NO;
            }
    
            case ReachableViaWWAN:
            {
                 return YES;
            }
    
            case ReachableViaWiFi:
            {
                 return YES;
            }
        }
    }
  • পদক্ষেপ 4: নীচের মত ফাংশন কল করুন:

    if (![self checkNetConnection]) {
        [GlobalFunctions showAlert:@""
                         message:@"Please connect to the Internet!"
                         canBtntitle:nil
                         otherBtnTitle:@"Ok"];
        return;
    }
    else
    {
        Log.v("internet is connected","ok");
    }

অ্যাপলের ডক্সটি
noobsmcgoobs
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.