Tag: 可达性

在后台IOS可达性通知

即使他在后台,用户上网也要尽快完成一些任务。 我正在使用Reachability类来检查互联网。 但是当我在后台时,这个class级不通知我。 我知道人们早些时候问过这个问题,但没有得到任何解决scheme。 如果我使用beginBackgroundTaskWithExpirationHandler 。 它只给我3到4分钟,之后,如果networking变化,我没有得到任何通知。 请给我一些build议。我认为这是可能的,因为本地邮件应用程序以这种方式工作,我的应用程序只支持iOS7。

可达性示例代码

我正在使用Apple站点的Reachability示例代码。 我已经添加了Reachability.h和Reachability.m文件到我的项目中,我也添加了SystemConfiguration.framework。 在我的视图控制器.h文件中添加了#import“Reachability.h”,并在我的视图控制器.h文件中声明了可达性variables。 在我开始使用Reachability实例之前,所有东西都没有错误地编译。 我得到ReachableViaWiFiNetwork和ReachableViaCarrierDataNetwork未申报的错误。 为什么会这样呢? reachability = [Reachability reachabilityForInternetConnection]; NetworkStatus internetStatus = [reachability currentReachabilityStatus]; if ((internetStatus != ReachableViaWiFiNetwork) && (internetStatus != ReachableViaCarrierDataNetwork)) { }

如何检查在斯威夫特3或斯威夫特4的互联网连接?

我试图检查在斯威夫特3互联网连接,但代码不适合我。 class func isConnectedToNetwork() -> Bool { var zeroAddress = sockaddr_in(sin_len: 0, sin_family: 0, sin_port: 0, sin_addr: in_addr(s_addr: 0), sin_zero: (0, 0, 0, 0, 0, 0, 0, 0)) zeroAddress.sin_len = UInt8(MemoryLayout.size(ofValue: zeroAddress)) zeroAddress.sin_family = sa_family_t(AF_INET) let defaultRouteReachability = withUnsafePointer(&zeroAddress) { SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0)).takeRetainedValue() } var flags: SCNetworkReachabilityFlags = SCNetworkReachabilityFlags(rawValue: UInt32(0)) if SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) == 0 { […]

如何testingEDGE或GPRS或任何其他慢/坏的networking

在我的iOS应用程序中,我支持在线和离线工作。 为此,我使用了苹果的Reachability代码 。 现在,如果蜂窝移动networking是EDGE或GPRS或者networkingbad/slow现在我想显示用户处于离线状态。 我已经使用了下面的代码(find解决scheme )。 码: CTTelephonyNetworkInfo *telephonyInfo = [CTTelephonyNetworkInfo new]; NSLog(@"Current Radio Access Technology: %@", telephonyInfo.currentRadioAccessTechnology); [NSNotificationCenter.defaultCenter addObserverForName:CTRadioAccessTechnologyDidChangeNotification object:nil queue:nil usingBlock:^(NSNotification *note) { NSLog(@"New Radio Access Technology: %@", telephonyInfo.currentRadioAccessTechnology); }]; 我使用3G cellular mobile network进行设备testing,并取得了成功的CTRadioAccessTechnologyWCDMA 。 要testingEDGE或GPRS或任何其他slow/bad network我使用设备的开发人员设置的networking链接条件 ,但仍然获得CTRadioAccessTechnologyWCDMA价值。 编辑: 经过这么多的研究,我发现了另一种测量信号强度的方法。 我已经testing了它在iOS7设备上的工作,但不是在iOS8.4设备。 另外我觉得这是私人API,所以苹果可能会拒绝这个。 这是我的代码: #import <CoreTelephony/CTTelephonyNetworkInfo.h> #import <dlfcn.h> int CTGetSignalStrength(); @implementation ViewController -(int) getSignalStrength […]

在使用应用程序期间丢失可达性连接时popup警报(IOS xcode swift)

我是IOS应用程序开发的初学者,并希望“在使用应用程序(IOS xcode swift)期间丢失可达性连接时popup警报”,但是我只在启动我的应用程序时才会popup警报。 当互联网连接丢失时,在使用我的应用程序时不会popup警报。 请提供帮助,谢谢! 我做了什么:1)创build一个Reachability.swift文件和worte import Foundation public class Reachability { class func isConnectedToNetwork()->Bool{ var Status:Bool = false let url = NSURL(string: "http://google.com/") let request = NSMutableURLRequest(URL: url!) request.HTTPMethod = "HEAD" request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData request.timeoutInterval = 10.0 var response: NSURLResponse? var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: nil) as NSData? if let httpResponse = […]

iPhone可到达的类

我已经添加了两个文件Reachability.h / m。 我遇到的问题是在ReachabilityCallback方法 NSCAssert([(NSObject*) info isKindOfClass: [Reachability class]], @"info was wrong class in ReachabilityCallback"); 错误消息是:将C指针types“void *”转换为Objective-C指针types“NSObject *”需要进行桥接转换 NSAutoreleasePool* myPool = [[NSAutoreleasePool alloc] init]; 错误:“NSAutoreleasePool”不可用:在自动引用计数模式下不可用 SCNetworkReachabilityContext context = {0, self, NULL, NULL, NULL}; 错误:ARC不允许将Object-C指针隐式转换为“void *” 有一堆ARC禁止“释放”/“自动释放”的显式消息发送。 是否有可用于ARC的代码版本? 谢谢

不断检测互联网连接

我想让我的应用程序自动检测互联网连接丢失。 所以即时通讯使用下面的代码。 – (void)applicationDidBecomeActive:(UIApplication *)application { Reachability *networkReachability = [Reachability reachabilityForInternetConnection]; NetworkStatus networkStatus = [networkReachability currentReachabilityStatus]; if (networkStatus == NotReachable) { [Settings hideSpinner]; //Show no internet connectivity dialog. } else { } } 但问题是,它不是连续检查互联网连接。 它只在应用程序激活时才检查。 如何在整个应用生命周期中连续检查互联网连接,并在互联网自动closures时发出警告?

如何以非阻塞的方式检查iOS上的networking可达性?

在我的iOS项目中,我想显示一条消息给用户在某些networking操作之前​​连接到互联网,所以我使用苹果的Reachability类写了下面的检查: Reachability *reach = [Reachability reachabilityWithHostName:@"google.com"]; if([reach currentReachabilityStatus] == NotReachable) { // …prompt user to establish an internet connection } else { // …send an asynchronous request with a timeout } 但是,这有一个非常大的问题 – 当设备在非常有损耗的networking上时(例如,在OS X Lion的networking链路调节器上将上行链路丢包设置为100%), [Reachability reachabilityWithHostName:@"google.com"]会在确定连接不可用之前阻塞主线程30秒。 下面的代码不会阻止: if([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] == NotReachable) { // …prompt user to establish an internet connection } else […]

iOS:可达性 – 返回到应用程序后,startNotifier失败

我有Reachability完全按照在这个线程中的build议工作。 我正在使用开源可达性 。 不过,我不使用块,但通知,因此该过程是非常类似于苹果的可达性代码。 我第一次启动应用程序,我运行这个,它很好。 Reachability *reachability = [reach hostReachability]; [reachability startNotifier]; reachabilityChanged:事件正在触发: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachability_Changed:) name:kReachabilityChangedNotification object:nil]; 但是,一旦我按回家button,回到应用程序, startNotifier内部返回一个NO而不是一个YES。 // Set it as our reachability queue, which will retain the queue if(!SCNetworkReachabilitySetDispatchQueue(self.reachabilityRef, self.reachabilitySerialQueue)) { #ifdef DEBUG NSLog(@"SCNetworkReachabilitySetDispatchQueue() failed: %s", SCErrorString(SCError())); #endif … return NO; 因此上述事件再也不会被解雇。 除非我使用这个错误,并且startNotifier应该只在init被调用一次,当可达性被实例化,永远不会再次? self.hostReachability = [Reachability reachabilityWithHostname:_HOST];

在iOS 7中使用错误的状态代码来响应可达性

我在iOS 7上遇到了奇怪的问题,我已经testing了与iPad1,2,3和iPhone 4,4等其他设备相同的代码,包括iOS 7在内的不同的iOS组合。 问题: 当我打开飞行模式,我得到可达性通知与状态NotReachable预期,但紧接着该应用程序接收状态代码ReachableViaWWAN ,这是不是预期的通知。 代码: +(BOOL)checkReachability { Reachability* internetReachable = [Reachability reachabilityForInternetConnection]; NetworkStatus internetStatus = [internetReachable currentReachabilityStatus]; switch (internetStatus) { case NotReachable: { DebugLog(@"The internet is down."); return NO; break; } default: return YES; break; } return YES; } 我在交换机上添加了日志,在飞行模式下返回状态为ReachableViaWWAN 。 可能的解决方法可能是: 在这种情况下为ReachableViaWWAN添加大小写并检查主机是否可达。 并相应地返回BOOL值。 任何人面临类似的问题 我已经search,但没有发现类似的情况。 提前致谢 !!