我在我的应用程序中切换了"仅在WiFi上下载".但是,这种切换对于iPod touch或WiFi-iPad来说毫无用处.
有没有办法知道设备是否具有代码中的蜂窝数据功能?将来会发挥作用的东西也会很棒(就像带有3G的iPod touch第五代产品一样).
我在一个从服务器接收数据的应用程序,问题是当用户连接到cellular data
(Not 3G
或WIFI
)时,接收数据需要很长时间.
我已经从这个答案中实现了这个代码,但我不确定它是否有效,有时候它给了我一个准确的类型,有时却没有.
这是我的代码:
- (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;
}}
Run Code Online (Sandbox Code Playgroud)
这是我能做的最好吗??,我尝试了Apple Reachability的例子,但它可以确定是否 …
我有一个iOS应用程序,在应用程序启动(资源更新等)上发出一些小的网络请求.如果用户在iOS设置中关闭应用程序的蜂窝访问权限,则每次启动时都会从iOS获得有关网络使用情况的提示.有没有办法以编程方式知道此应用程序的蜂窝数据已被禁用,以便我可以在启动时禁用请求?
我想以编程方式获取每个应用程序的蜂窝数据使用详情.此外,请注意,不应强制在越狱设备上执行.请推荐一些API.
有没有办法跟踪iPhone上的手机数据使用情况?有很多应用程序像'Dataman'和'DataUsage'那样做同样的事情
基本上我正在寻找一种编程方式来获取存储在设置 - >常规 - >用法中的信息
任何帮助将不胜感激.
在iOS中,我需要知道实际时间(UTC),而不是设备的时间.换句话说,用户不应该篡改时间或日期.
任何需要网络连接的东西都不好(因此不能选择访问时间服务器).
AFAIK,有两种理论方法可以达到这个目的:
问题是iOS中的任何API都不会公开此信息.
还有另外一种方法吗?
我已启用具有远程通知任务的后台模式,以便在应用程序收到推送通知时在后台下载小文件(100kb).我已经使用配置了下载会话
NSURLSessionConfiguration *backgroundConfiguration = [NSURLSessionConfiguration backgroundSessionConfiguration:sessionIdentifier];
[backgroundConfiguration setAllowsCellularAccess:YES];
self.backgroundSession = [NSURLSession sessionWithConfiguration:backgroundConfiguration
delegate:self
delegateQueue:[NSOperationQueue mainQueue]];
Run Code Online (Sandbox Code Playgroud)
并使用激活它
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[hostComponents URL]];
[request setAllowsCellularAccess:YES];
NSMutableData *bodyMutableData = [NSMutableData data];
[bodyMutableData appendData:[params dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[bodyMutableData copy]];
_downloadTask = [self.backgroundSession downloadTaskWithRequest:request];
[self.downloadTask resume];
Run Code Online (Sandbox Code Playgroud)
现在一切正常,只有当我通过Wifi或通过Cellular连接但iPhone连接到xCode的电缆时,如果我断开iPhone并通过蜂窝接收推送通知代码停 [self.downloadTask resume];
在线而不调用URL.
处理这些操作的类是NSURLSessionDataDelegate,NSURLSessionDownloadDelegate,NSURLSessionTaskDelegate,因此实现:
- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential *))completionHandler
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:(int64_t)fileOffset expectedTotalBytes:(int64_t)expectedTotalBytes
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location
Run Code Online (Sandbox Code Playgroud)
我试图插入一个带有 …
background cellular-network ios nsurlsession nsurlsessiondownloadtask
可以在PHP脚本(可以用一个MySQL数据库合作)发送和/或接收短信使用某种形式的服务器端解决方案?
是否需要特殊的服务器端应用程序或特殊硬件?和兼容性?Windows,Linux?
我有一个Android应用程序和一个可通过Wi-Fi服务器.
对于某些操作(例如来自服务器的视频流),我的应用程序通过共享文件的URL来使用第三方应用程序.
从Android L设备开始可以同时连接到Wi-Fi和蜂窝网络,这打破了我的应用程序,因为服务器没有互联网,而且蜂窝网络越来越受到Android的青睐(因为它有互联网),因此URL无法解析.我通过bindProcessToNetwork()将我的应用程序绑定到Wi-Fi来修复此问题.但是,当应用程序与第三方应用程序共享URL时,由于第三方应用程序未绑定到Wi-Fi,因此仍无法解析该URL.
有没有办法让第三方应用程序在打开我的应用程序提供的URL时使用Wi-Fi而不是蜂窝?
android cellular-network android-networking android-wifi android-5.0-lollipop
有没有办法检查用户是否正在使用具有蜂窝网络连接的设备(这主要适用于平板电脑)?也就是说,智能手机配备内置Wi-Fi和Cellular(通常),但有些平板电脑只配备Wi-Fi.我怎么知道运行我的应用程序的设备类型?
我尝试了以下没有结果:
cell = ConnectivityManager.isNetworkTypeValid(ConnectivityManager.TYPE_MOBILE);
wifi = ConnectivityManager.isNetworkTypeValid(ConnectivityManager.TYPE_WIFI);
if (cell) tv_1.setText("The tablet has cellular");
else tv_1.setText("The tablet does not have cellular");
if (wifi) tv_2.setText("The tablet has wifi");
else tv_2.setText("The tablet does not have wifi");
Run Code Online (Sandbox Code Playgroud)
问题是两个比较总是返回真实,即使它是一个没有蜂窝的平板电脑.
我只需要知道设备是否有SIM卡插槽(带蜂窝电话的型号),或者它是只有WiFi的型号,这可能吗?
提前致谢.
networking android network-programming cellular-network android-wifi
cellular-network ×10
ios ×7
iphone ×4
objective-c ×3
android ×2
android-wifi ×2
networking ×2
background ×1
bulksms ×1
gps ×1
nsurlsession ×1
php ×1
sms ×1
uidevice ×1