在 ipad 与 iphone 上传递本地通知问题

Posted

技术标签:

【中文标题】在 ipad 与 iphone 上传递本地通知问题【英文标题】:local notifications issue delivering on ipad vs iphone 【发布时间】:2015-06-15 02:22:10 【问题描述】:

我的应用程序的本地通知有问题。当我测试我的应用程序的通知时,在 iphone 上它每天触发一次,但在 ipad 上每天触发 5 次。这是我的代码:

NSDateComponents *comp = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:[NSDate date]];

NSInteger day = [comp day];
NSInteger month = [comp month];
NSInteger year = [comp year];
NSInteger hour = [comp hour];
NSInteger min = [comp minute];
NSInteger sec = [comp second];

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setDay: day];
[components setMonth: month];
[components setYear: year];
[components setHour: hour];
[components setMinute: min];
[components setSecond: sec];
[calendar setTimeZone: [NSTimeZone defaultTimeZone]];
NSDate *dateToFire = [calendar dateFromComponents:components];

// Schedule the notification
UILocalNotification* localNotification = [[UILocalNotification alloc] init];
localNotification.fireDate = dateToFire;
int i = arc4random() % 2;
if (i == 1) 
    localNotification.alertBody = @"Collect your FREE coins!";
 else 
    localNotification.alertBody = @"It's time to win";

localNotification.alertAction = @"View";
localNotification.timeZone = [NSTimeZone defaultTimeZone];
[localNotification setRepeatInterval: kCFCalendarUnitDay];
localNotification.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber] + 1;

[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
NSLog(@"local notif = %@", localNotification);

我在这段代码中的错误是什么?为什么它似乎在 iPhone 上正确发出通知,但在 iPad 上却没有?

【问题讨论】:

【参考方案1】:

如果您的 iPad OS 版本 > 8.0,那么您必须获得用户的许可。在“didFinishLaunchingWithOptions”(AppDelegate.m)中编写以下代码

if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)])
    [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];

【讨论】:

以上是关于在 ipad 与 iphone 上传递本地通知问题的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Iphone 的远程通知传递给 Watch OS?

在 iPhone 上处理时如何使 iPad 上的 iOS 推送通知无效?

Web 推送通知 FCM 是不是可以在 iPhone 和 iPad 设备上使用?

自定义iPhone和iPad macOS风格的通知

在 Apple Watch 中显示 iPhone 本地通知

iPhone iOS:本地通知未出现