我UIBackgroundModes
在Info.plist中添加了一个属性,其数组条目为" audio
",并添加了调用以设置音频会话:[session setCategory: AVAudioSessionCategoryPlayback error: &error];
.
但是,我唯一的测试设备是iPod Touch 2G,它不支持多任务处理.我尝试过模拟器但是当我切换到Safari时音乐停止播放.但当我切换回我的应用程序时,歌曲继续播放到比离开应用程序时更远的位置.
它似乎继续在后台播放但我在使用其他应用程序(Safari)时没有听到我的应用程序的音频.
是否有任何方便的方法可以确定是否正在从处于后台模式的应用程序加载视图?
在 3.XI 中会依赖 viewDidLoad 进行一些初始化等操作,但是对于 4.X 则不是这种情况,因为您不能依赖于调用 viewDidLoad 方法。
我想避免在 appdelegate 中放置额外的标志来检测这一点,我宁愿在 UIViewController 中使用一种可靠的方法来执行此操作,但似乎无法在 UIViewController 的生命周期中找到任何可以帮助我的东西。
有任何想法吗?你如何处理这些情况?
我正在开发一个移动网络应用程序(网站),要求您将其添加到主屏幕.当你打开它,然后切换到另一个应用程序,然后回到我的网络应用程序,整个应用程序重新加载.它显示了闪屏,甚至不记得你最后的位置.
有没有解决的办法?我在iOS文档中找不到任何细节.
我正在使用AFURLSessionManager,并将管理器设置为单例实例.
- (AFURLSessionManager *)backgroundSession
{
static AFURLSessionManager *backgroundSession = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
NSURLSessionConfiguration *config = [NSURLSessionConfiguration backgroundSessionConfiguration:@"com.testBackground.BackgroundDownload.BackgroundSession1234"];
backgroundSession = [[AFURLSessionManager alloc]initWithSessionConfiguration:config];
[backgroundSession setDownloadTaskDidWriteDataBlock:^(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite){
NSLog(@"i am downloading my id = %d progress= %f",downloadTask.taskIdentifier, totalBytesWritten*1.0/totalBytesExpectedToWrite);
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
}];
[backgroundSession setDownloadTaskDidFinishDownloadingBlock:^NSURL *(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, NSURL *location){
NSLog(@"download finished");
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
return location;
}];
});
return backgroundSession;
}
//assign a download task
NSURLSessionDownloadTask *task = [manager1 downloadTaskWithRequest:request …
Run Code Online (Sandbox Code Playgroud) 我正在Ruby中为我的工作编写一个作业调度应用程序(主要是在给定频率下使用各种协议移动文件)
我的主循环看起来像这样:
while true do
# some code to launch the proper job
sleep CONFIG["interval"]
end
Run Code Online (Sandbox Code Playgroud)
它的工作就像一个魅力,但我不确定它是否足够安全,因为应用程序可能在运行cpu密集型软件的服务器上运行.
还有另一种方法可以做同样的事情,或者sleep()
在我的情况下是否足够安全?
当我的应用程序处于iOS4.0的后台时,我在启动AudioQueue时遇到困难.当应用程序处于活动状态时,代码工作正常,但在后台运行时代码失败,但代码失败.
err = AudioQueueStart( queueObject, NULL );
if( err )
{
NSLog(@"AudioQueueStart failed with %d", err);
= NO;
AudioQueueStop(queueObject, YES);
return;
}
Run Code Online (Sandbox Code Playgroud)
对于上面的代码,err设置为-12985
我想创建一个可以在任何应用程序上方打开的活动.
通常情况下,即使活动设置为对话框,当您切换到我的应用程序时,您会看到我的应用程序,并在后台看到启动器:
但是,我希望应用程序将超越任何这样的应用程序:(在photoshop中制作):
我确实看到了这个问题创建系统覆盖窗口(总是在顶部),但在ICS中,布局没有功能.此外,我想从我的应用程序给出一个对话框,而不会最小化其他应用程序...
我正在指定一个iOS应用程序(将在我们公司之外构建),它将用户的数据条目上传到服务器.如果设备未连接到Internet,我们希望在设备上保存数据并在重新连接网络时上传数据.(该应用程序将主要在大多数时间将断开连接的iPod Touch设备上运行).
如果用户在重新连接网络后解锁设备并重新打开我们的应用程序,那么上传到服务器应该很容易,因为应用程序正在运行.
但是,如果应用程序没有运行,"未运行"可能意味着以下一个或多个:
在上述情况下,有没有办法(理想情况下是节省电池的方式)确保在恢复互联网连接后很快上传本地数据?答案是否有所不同取决于上述哪些案例导致应用程序无法运行?
是否有设备所需的最低iOS版本,以便在应用程序未运行时仍能上传部分(或全部)上述未运行的案例?
如果这些是明显的新手问题我很抱歉 - 我不是iOS专家.
在我看来,系统采用与我的应用程序所采用的不同的屏幕截图applicationWillResignActive
.
令我惊讶的是,系统(b)拍摄的图像与游戏(d)拍摄的图像之间存在约0.6秒的延迟.如果系统之前需要进行屏幕捕获applicationWillResignActive
,那就很有意义,但对于具有快速移动物体的游戏,玩家很容易注意到这一点.
我该如何解决这个问题?
以下是播放器制作的步骤以及它如何导致这种差异:
(a)玩家在玩游戏时会按下主页按钮.(b)进行系统屏幕捕获.(c)玩家点击游戏图标.(d)在进行屏幕截图的情况下启动游戏applicationWillResignActive
.(e)游戏暂停,显示快速移动物体的差异.
我正在努力采用多任务来支持应用程序的拆分视图.但我发现app在右边时没有调用traitCollectionDidChange.有没有人对此有所了解?
multitasking ×10
ios ×4
background ×2
ios4 ×2
iphone ×2
android ×1
dialog ×1
homescreen ×1
ios7 ×1
java ×1
nsurlsession ×1
objective-c ×1
reachability ×1
ruby ×1
swift ×1