我想知道App Delegate的功能.它有一些很好的方法,比如-applicationDidFinishLaunching应用程序完成启动时会调用,等等.但究竟是什么呢?是否在UIApplicationMain函数中实例化了一些对象?
我的应用程序中的每个类都可以访问该App Delegate对象,它是如何工作的?网上是否有任何可视化这些关系的好图表?
delegates uiapplication uiapplicationdelegate ios appdelegate
在iOS 8 beta 2上,应该可以使用app扩展中的openUrl写入发行说明中:

但是,当我尝试使用此API(在Xcode 6 beta 2上)时,我收到以下错误:

Beta 2是否真的解决了这个问题?
我刚看到Booking.com应用程序的这个技巧,让你更改应用程序的语言:
我不知道有任何技术以编程方式关闭iOS应用程序(并且它也被Apple的指导禁止,但让我们"假装"我的老板要我这样做).
他们是如何做到的呢?我已经尝试了,exit(0)但它会立即退出,就像进程崩溃一样,而他们的应用程序通常会动画到主屏幕.是否可能有私人URL方案打开主屏幕?
一个名为Vesper的应用程序已针对iOS 7进行了更新,并在iOS 7上显示了用户的壁纸.我发现使用UIApplicationIsOpaque键和UIBackgroundStyleLightBlur可以显示用户背景,但不会通过验证.Vesper通过验证并通过Apple.我确实将这个问题上传到开发论坛,但苹果已经把它删除了.
我需要做点什么applicationDidEnterBackground.但我需要区分哪个用户操作导致"输入背景":屏幕锁定或按下主页按钮.
我正在使用这个代码,这是从这篇文章 - 如何区分iOS5上的屏幕锁定和主页按钮?:
UIApplicationState state = [application applicationState];
if (state == UIApplicationStateInactive) {
NSLog(@"Sent to background by locking screen");
} else if (state == UIApplicationStateBackground) {
NSLog(@"Sent to background by home button/switching to other app");
}
Run Code Online (Sandbox Code Playgroud)
它在iOS6上运行良好.但是在iOS7(设备和模拟器)上UIApplicationStateBackground,无论用户是单击主页还是锁定按钮,我总能得到.
有人知道可能导致这种情况的原因吗?iOS 7更新到多任务后台处理?或者我的应用程序的某些设置(我的应用程序的后台模式已关闭)?
还有替代解决方案吗?
我有这个方法
- (IBAction)facebookButtonPress:(id)sender {
NSLog(@"fb hit");
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[@"www.facebook.com/asbreckenridge" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么safari没有打开链接.我记录了'fb hit',所以正在调用该方法,但它没有在Safari中打开链接,我做错了什么?
我正试图将游戏库移植到iPhone上.与SDL不同,此库不完全控制main()函数,它通过快速返回的函数与您自己的代码进行通信.所以,例如,明显的伪代码:
int main() {
library_init();
// game init code here
while(we_have_not_quit_the_game) {
library_message_loop();
library_init_render();
// render stuff
library_end_render();
// update game state
}
library_shutdown();
}
Run Code Online (Sandbox Code Playgroud)
iPhone使这很困难,因为它要求你调用一个永不返回的UIApplicationMain函数.在library_init();之后我根本无法回到用户代码.
我不相信它是必要的 - 有NSRunLoop可以用来处理这些事件.然而,我不知道UIApplicationMain是否做了其他重要的事情.(请注意,我没有计划使用.nib文件,这是我发现UIApplicationMain唯一的另一件事.)
我有三个我能想到的真实想法,但它们都是一项重大的实施工作,所以我想知道是否有人有这方面的经验,然后我会花一天时间尝试注定的想法.
建议?
我有一个iPad调查工具作为内部企业应用程序.我阻止锁屏与设置[[UIApplication sharedApplication] setIdleTimerDisabled: YES];在didFinishLaunchingWithOptions应用程序委托的.
这工作正常,直到我使用imagePicker拍摄图像.之后,idleTimer再次激活.我试图在拍摄图像后禁用它,但这不起作用.
在这里,我发现提示在info.plist中设置所需的设备功能可能会有所帮助.但到目前为止它没有.我刚刚添加了所有相机特定的标志.
有任何想法吗?
非常感谢!
马库斯
我正在创建一个内部应用程序来提供我们的业务客户可以无线安装的更新应用程序.
最终,我启动安装的方式是:
NSURL *otaURL = [NSURL URLWithString:@"itms-services://?action=download-manifest&url=<<my-url.plist>>"];
[[UIApplication sharedApplication] openURL:otaURL];
Run Code Online (Sandbox Code Playgroud)
这工作正常但我们注意到它有时会保留plist或ipa文件的缓存并安装旧版本.我们已经排除它在服务器上没有更新,因为我们甚至可以从服务器删除ipa文件,它仍然会安装旧版本.
更改.plist和.ipa文件名将起作用,但实际上不是所需的最终状态,所以我的问题是:有没有办法强制设备出去从服务器获取文件而不是依赖它的缓存?
uiapplication ×10
ios ×7
objective-c ×3
ios7 ×2
openurl ×2
appdelegate ×1
cocoa-touch ×1
delegates ×1
ios8 ×1
iphone ×1
nsrunloop ×1
nsurl ×1
swift ×1
uiwindow ×1