iPhone应用程序在后台

时间:2009-01-29 12:22:50

标签: iphone objective-c

有没有办法从关闭的iPhone应用程序启动声音或弹出消息。 就像“接收短信”

3 个答案:

答案 0 :(得分:7)

我不相信。 Apple声称没有第三方应用程序可以在后台运行(即使他们的一些应用程序这样做)。这就是为什么去年夏天有很多关于“推送通知”的原因(不幸的是,这已经不存在了) - 这将允许应用程序从服务器发送一些数据,然后适当地响应它。

如果你为越狱的iPhone编写应用程序,你可能能够做到这一点,但只有那些已经越狱手机的用户才能安装和使用你的应用程序。

答案 1 :(得分:7)

是的,在最初回答问题后,这实际上已经改变了。

目前至少有两种方法可以让关闭的应用程序播放声音或弹出窗口。

  1. 应用可以在运行时注册本地通知,即使应用已关闭,也会在将来调用该通知。通知将显示弹出窗口并可选择播放声音或在应用程序的图标上设置徽章。实现这一点很简单:

        id localNotif = [[NSClassFromString(@"UILocalNotification") alloc] init];
        if (!localNotif) {
            return;
        }
    
        [localNotif setTimeZone:[NSTimeZone defaultTimeZone]];
        [localNotif setAlertBody:NSLocalizedString(@"Hello!",nil)];
        [localNotif setAlertAction:NSLocalizedString(@"Hello", nil)];
        [localNotif setSoundName:UILocalNotificationDefaultSoundName];
        [localNotif setFireDate:[[NSDate date] addTimeInterval:(60*60)]];           
        [localNotif setFireDate:[[NSDate date] addTimeInterval:(24*60*60)]];
        [[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
        [localNotif release];
    
  2. 应用程序(在用户允许的情况下)可以向远程服务器(您的服务提供商或服务提供商)注册,以接收您(通过Apple系统)向其发送的推送通知。一旦收到,应用程序将可选地显示弹出窗口,播放声音和/或更改应用程序图标上的徽章。 Apple文档中有一些示例代码用于实现此方面的iPhone,以及一些为服务器端浮动的开源项目。您可以通过使用像Urban Airship这样的服务来绕过必须实现自己的服务器端。

答案 2 :(得分:1)

Andy是对的,但Apple也承诺为第三方推出他们的推送系统。所以,我认为你可以等到他们释放它......但不知道什么时候。