首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sharedApplication].scheduledLocalNotifications iOS 8 [UIApplication UIApplication空

sharedApplication].scheduledLocalNotifications iOS 8 [UIApplication UIApplication空
EN

Stack Overflow用户
提问于 2014-09-20 11:00:03
回答 3查看 8.7K关注 0票数 6

我正在尝试将我的应用程序更新为iOS 8。在一个函数中,我安排了一个本地通知(我已经检查过那个壁炉,通知的其他部分都是正确的):

代码语言:javascript
复制
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

然后,我使用这段代码打印预定的本地通知:

代码语言:javascript
复制
NSLog(@"notifications %@", [UIApplication sharedApplication].scheduledLocalNotifications );

但是数组

代码语言:javascript
复制
[UIApplication sharedApplication].scheduledLocalNotifications 

即使没有触发通知,也是空的。然后,为了检查本地通知是否真的被调度,我尝试使用以下代码

代码语言:javascript
复制
NSLog(@"notification appdelegate %@", application.scheduledLocalNotifications );

在函数中

代码语言:javascript
复制
- (void)applicationWillResignActive:(UIApplication *)application 

在这种情况下,调度的本地通知的数组不是空的,Appdelegate.m函数打印正确的通知。这种情况只发生在真正的设备上,在模拟器中,我的应用程序工作正常。问题是不检查用户调度本地通知的权限,因为我已经面临过这种情况。有人能帮我吗?一些想法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-26 15:48:38

这不是iOS 8的问题,但是

代码语言:javascript
复制
[UIApplication sharedApplication].scheduledLocalNotifications

问题。最相关的答案,我找到了here

现在也有类似的问题。我在这里的猜测是,iOS不会立即安排通知,而是只在当前运行循环的末尾调度通知。在同一个run循环中多次设置scheduledLocalNotifications属性时,我遇到了这些问题,并且似乎没有相应地更新更改。我想我应该自己保存一个本地通知数组的副本,并且只设置scheduledLocalNotifications,而不读取它。

票数 12
EN

Stack Overflow用户

发布于 2014-09-21 07:12:28

对于iOS8:

从现在起30秒内发出本地通知。

-关于目标c

代码语言:javascript
复制
    UILocalNotification *localNotification = [[UILocalNotification alloc] init];
    localNotification.alertAction = @"Testing notifications on iOS8";
    localNotification.alertBody = @"Woww it works!!";
    localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow: 30];
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

-斯威夫特

代码语言:javascript
复制
    var localNotification:UILocalNotification = UILocalNotification()
    localNotification.alertAction = "Testing notifications on iOS8"
    localNotification.alertBody = "Woww it works!! 
    localNotification.fireDate = NSDate(timeIntervalSinceNow: 30)
    UIApplication.sharedApplication().scheduleLocalNotification(localNotification)

注册通知设置

-关于目标c

代码语言:javascript
复制
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]]

        return YES;
    }

-斯威夫特

代码语言:javascript
复制
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool 
    {
        application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Sound|UIUserNotificationType.Alert |UIUserNotificationType.Badge, categories: nil)   

        return true
    }

现在,您也可以获得本地通知。

票数 4
EN

Stack Overflow用户

发布于 2016-12-21 09:22:01

一旦为给定日期触发本地通知,它就不会在UIApplication UIApplication数组中显示详细信息。所以,如果你给fireDate (从CurrentDate到10~20)一些间隔计数,它会给你显示细节。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25948037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档