首页 > 代码库 > iphone开发-Local Notifications

iphone开发-Local Notifications

 两种方式 Local notifications 和 push notifications(也成为Remote notifications)可以让当前没有工作的App,给用户提示信息。用户的设备上会出现一个Alert,用户可以点击进入该App。其中Push notifications适用于 iOS 3.0 及 Mac OS X v7.0, Local notifications 适用于 iOS 4。
      比较简单的应用,如捕鱼达人。很长一段时间不玩的话,系统会弹出一个提示,提醒玩家好久没有玩了。这是一种营销方式。而且成本也不高。便是通过Local notifications来实现的。现在我们就主要分析一下 Local notifications。至于Remote notifications,用于有服务器端支持的App。

      UIApplication扩展了一个UILocalNotifications类别(同样也有UIRemoteNotifications)
      @interface UIApplication (UILocalNotifications)

       它引入了一些方法如:
             scheduleLocalNotification:
             cancelLocalNotification:
       用来注册或取消一个UILocalNotification

       假设我们规定时间为3天,如果3天没有来玩,便弹出提示。那么我们首先应该在游戏退出时注册一个三天后触发的事件。同时要在游戏开始时,注销掉这个事件。测试发现applicationWillTerminate并不会调用,可能是ios4之后,用户按下home键,当前应用并不退出而是转向后台的缘故。因此我们将注册位置放在了applicationDidEnterBackground里。
  
    NSDate *notifyTime = [NSDate dateWithTimeIntervalSinceNow:3*24*3600];//触发的时间
    UILocalNotification *localNofify = [[UILocalNotification alloc] init];
    if(localNofify==nil)
        return;
    localNofify.fireDate = notifyTime;
    localNofify.timeZone = [NSTimeZone defaultTimeZone];
   
    localNofify.alertBody = @"您很久沒有玩了......";
    localNofify.soundName = UILocalNotificationDefaultSoundName;
    localNofify.applicationIconBadgeNumber = 1;   
    [[UIApplication sharedApplication] scheduleLocalNotification:localNofify];//注册
    [localNofify release];

    需要说明的是iconBadgeNumber,它代表的是该应用的Icon上显示的数字数。
技术分享
     在游戏启动时要记得清零:
    [[UIApplication sharedApplication] cancelAllLocalNotifications];
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
  

更多信息查看官方网站:http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008194-CH1-SW1

iphone开发-Local Notifications