ios如何?本地推送,相容ios8,ios相容ios8

來源:互聯網
上載者:User

ios如何?本地推送,相容ios8,ios相容ios8

如果要相容IOS8在IOS中實現本地推送,關鍵是要注意:ios8在實現本地推送時需要通過如下語句進行註冊。

[[UIApplication sharedApplication] registerUserNotificationSettings:mySettings];

至於IOS8之前版本的做法就不多說了,直接上代碼。建立oc類檔案(NotificationHelper),在NotificationHelper.h中聲明相關方法如下:

#import <UIKit/UIKit.h>@interface NotificationHelper:NSObject <UIApplicationDelegate>{}-(void) addNotifiction:(NSString*) firedate keyA:(NSString*)key messageA:(NSString*)message
-(void)removeLocalNotificationByKey:(NSString*)key;
-(void)removeLocalAllNotification;
-(void) registerLocalNotification:(UIApplication*)application;
+(NotificationHelper*) shareInstance;
@end

在NotificationHelper.m檔案中實現方法如下:

#import "NotificationHelper.h"@implementation NotificationHelperstatic NotificationHelper* instance;//實現單例+(NotificationHelper*) shareInstance{    static dispatch_once_t onceToken ;    dispatch_once(&onceToken, ^{        instance = [[super allocWithZone:NULL] init] ;    });    return instance ;}//推送處理[註冊訊息通知]-(void) registerLocalNotification:(UIApplication*)application{    application.applicationIconBadgeNumber = 0;//清除應用表徵圖上的數字
//關鍵:加上版本的控制#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0 // The following line must only run under iOS 8. This runtime check prevents // it from running if it doesn't exist (such as running under iOS 7 or earlier). UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert; UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:nil]; if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) { [[UIApplication sharedApplication] registerUserNotificationSettings:mySettings]; }#endif}-(void) addNotifiction:(NSString*) firedate keyA:(NSString*)key messageA:(NSString*)message{ NSLog(@"addNotifiction"); UILocalNotification *localNotification = [[UILocalNotification alloc] init]; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"HH:mm:ss"]; NSDate *now = [formatter dateFromString:firedate];//觸發通知的時間
  //如果firedate傳入的是XX:XX:XX格式在表示在固定的時間點發送通知,如果傳入的是XX格式表示從現在開始XX秒後發送通知 if(now == nil) { NSTimeInterval secs = [firedate doubleValue]; now = [NSDate dateWithTimeIntervalSinceNow:secs]; } localNotification.fireDate = now; //設定 時區 localNotification.timeZone = [NSTimeZone defaultTimeZone]; // 觸發後,彈出警告框中顯示的內容 localNotification.alertBody = message; localNotification.alertAction = NSLocalizedString(@"View Details", nil); // 觸發時的聲音(這裡選擇的系統預設聲音) localNotification.soundName = UILocalNotificationDefaultSoundName; // 觸發頻率(repeatInterval是一個枚舉值,可以選擇每分、每小時、每天、每年等) localNotification.repeatInterval = kCFCalendarUnitDay;//測試用暫時寫死為每隔一天 0:不重複
// 需要在App icon上顯示的未讀通知數(設定為1時,多個通知未讀,系統會自動加1,如果不需要顯示未讀數,這裡可以設定0)
localNotification.applicationIconBadgeNumber = 1;
// 設定通知的id,可用於通知移除,也可以傳遞其他值,當通知觸發時可以擷取
localNotification.userInfo = @{@"id" : key};
// 註冊本地通知
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
[localNotification release];
}
/** removeLocalNotificationByKey */- (void)removeLocalNotificationByKey:(NSString*)key { // 取出全部本地通知 NSArray *notifications = [UIApplication sharedApplication].scheduledLocalNotifications; // 設定要移除的通知id NSString *notificationId = key; // 遍曆進行移除 for (UILocalNotification *localNotification in notifications) { // 將每個通知的id取出來進行對比 if ([[localNotification.userInfo objectForKey:@"id"] isEqualToString:notificationId]) { // 移除某一個通知 [[UIApplication sharedApplication] cancelLocalNotification:localNotification]; } }}- (void)removeLocalAllNotification { [[UIApplication sharedApplication] cancelAllLocalNotifications];}@end

用法舉例:

比如在應用啟動的時候調在didFinishLaunchingWithOptions方法中調用:

[[NotificationHelper shareInstance] registerLocalNotification:application];

進行註冊和版本控制,在需要發送通知的時候調用:

[[NotificationHelper shareInstance] addNotifiction:"18:30:30" keyA:"key" messageA:"可以領取體力了!" ]

完畢。由於公司的手遊項目需要使用到本地推送,而我們的項目是用quick cocos2d-x引擎,前端使用LUA編寫指令碼和介面。這樣就面臨一個問題:如何編寫友好的介面讓lua能夠調用oc來實現推送,這樣的話所有的邏輯都在lua中實現。

下次有空再說。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.