iOS主页button警告,这可能吗?

我真的不认为这是可以做到的,但是我的老板仍然要求我提供一个链接。 他想要的是添加一个“你确定要退出吗?” 用户按下主页button时发出警告,如果用户说“不”,则应用程序不会无效。 这是不可能的,可以吗?

不,你不能这样做 – 应用程序没有发言权。 问问你的老板他是否曾经见过一个iOS应用程序的例子。 没有…我不会打赌。

应用程序可以继续在后台执行一些function – stream式音乐,例如获取位置信息,但是没有应用程序可以阻止主页button。 如果你能做到这一点,你可以阻止一个应用程序永远closures。

A)你无法在技术上做到这一点

B)苹果公司不会允许它在App Store上发布,如果这是你正在采取的发行路线

如果您在创build应用程序委托时查看由XCode创build的方法存根控件

-(void)applicationWillResignActive:(UIApplication *)application -(void)applicationWillTerminate:(UIApplication *)application 

这些填充将评论你如何使用这种方法来暂停任务,禁用定时器,降低帧速率,保存数据 – 没有什么能够延迟,用“你确定”的信息来查询用户。

这个想法与iPhone / Pad / Pod-Touch的用户体验相反。

从App Store指南(略略略):

改变设备上开关行为的应用程序将被拒绝

这是build议改变主页button的行为 – 所以会被拒绝。

这可能是一个监狱破碎的设备,使用未经批准的API。 这个概念是在多次违反苹果的使用政策,所以你永远不会得到一个应用程序试图以任何方式在官方应用程序商店实现这一点。 这只是几个原因:

  1. 你不能改变任何button的function(包括音量button,一些用来拍照的照相机应用程序,但是他们从商店里启动)。
  2. 您不能干涉标准用户与设备的交互。 主页button将人们带回家,你无法阻止,或要求确认,因为这会干扰交互。
  3. 没有公共API来检测主页button的实际使用情况。 因此,您将需要一个私有API,并且您不能使用私有API,没有苹果公司的明确许可,由于上面的#1和#2,他们永远不会给。

我相信还有很多其他的原因,但不pipe是直接违反app store政策还是iOS人机界面指南。

您可以检测到应用程序即将失去焦点,失去焦点或失去焦点(例如电话进入),但无法改变stream程(即不允许应用程序失去焦点)。

您可以继续在后台执行背景指导和限制内的代码。 后台代码可以向用户提交一个通知,允许他们切换回应用程序…这是关于你可以得到的尽可能接近,并期望苹果拒绝你,如果它发生每次应用程序closures…

已经有很多人回答了,但不是,你不能这样做。 当用户按下主页button时,您的应用程序委托的applicationWillResignActive被调用,从而禁用应用程序的触摸事件。 然后调用applicationDidEnterBackground ,根据Apple文档 :

您的委托的applicationDidEnterBackground:方法有大约5秒完成任何任务并返回。 实际上,这个方法应该尽快返回。 如果该方法在时间耗尽之前没有返回,那么应用程序将被终止并从内存中清除

你需要certificate来certificate你的老板显然不是iOS开发者。

苹果人机界面指南

这应该是你需要的所有证据。 但要清楚的是,苹果不会允许应用程序以任何方式覆盖主页button。 在注销之前,您一定要将操作表或popup窗口警告出来,但是一旦按下主页button,您将被通知放弃记忆,您将被closures。

你可能想看看IOS的商店演示模式。 通过这种方式,您可以在启动后的第一个应用程序中取消“主页”button并locking设备。

我知道我为时已晚回答这个问题。

但是最近我遇到了Samssonart的问题。

@iandotkelly给出的答案已经被iOS5弃用了。 现在没有委托方法将用于区分使用主页buttonlocking设备或发送应用程序到背景。

您现在可以使用applicationStatevariables来定义触发的操作。

applicationState是由appDelegate提供的内置ID。

**

 if it returns 2 then, it will identify the Home button is pressed if it returns 1 then, it will identify the lock hardware button is pressed 

**

所以,在你的情况下,你可以检查出这个**applicationDidEnterBackground**方法的条件

 - (void)applicationDidEnterBackground:(UIApplication *)application { NSLog(@"decision >> %d",[[UIApplication sharedApplication] applicationState]); } 

享受编程!

我能find的最好的参考是这一个 。 这不是很明确,但苹果的人机交互界面指南有两个标题:“总是准备停止”,然后是“不要编程式”,它说明了主页button的作用,而且你不应该执行自己的戒烟策略。

我知道这是一个老话题,但我只想更新这个答案。 在iOS 7中,这是行不通的。 所以我使用screenbrightness时,应用程序将去背景,以确定Home和Lockbutton之间的区别。

-(void)applicationDidEnterBackground:(UIApplication *)application { if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateInactive) { NSLog(@"Sleep button pressed"); } else if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground) { if ([[UIScreen mainScreen] brightness] > 0.0) NSLog(@"Home button pressed"); else NSLog(@"Sleep button pressed"); } }

我希望这将是任何人的未来的任何帮助