代表一个不在ios上工作的本地通知

时间:2016-02-22 21:07:16

标签: java ios notifications codenameone

我添加了一个本地通知,因此当我的应用程序在打开时进行推送时,仍会有弹出窗口和声音。 它在Android上工作正常,但在iOS上根本没有出现本地通知。

推送通知在两个平台上都运行正常。

这是我应该触发通知的推送回调中的代码(如果应用程序已打开):

if(Display.getInstance().getCurrent() != null) {
    LocalNotification n = new LocalNotification();
    n.setId(value);
    n.setAlertBody(value);
    n.setAlertTitle({app name});
    n.setBadgeNumber(1);
    Display.getInstance().scheduleLocalNotification(n, System.currentTimeMillis() + 1000, LocalNotification.REPEAT_NONE);
}

4 个答案:

答案 0 :(得分:4)

应用程序在前台打开时,本地通知不会触发。在应用程序运行时,您应该使用不同的机制发出声音。例如Display.vibrate()

答案 1 :(得分:1)

- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
{

[[NSNotificationCenter defaultCenter] postNotificationName:@"DriverNotification" object:nil userInfo:userInfo];
//    [[NSNotificationCenter defaultCenter] postNotificationName:@"UserNotification" object:nil userInfo:userInfo];
       NSLog(@"%@",userInfo);
}

将此代码放入View Controller

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveNotification:) name:@"DriverNotification" object:nil
 ]; 

答案 2 :(得分:0)

您是否致电registerUserNotificationSettings注册您的应用使用本地通知这一事实?如果您不这样做,您的发布本地通知的请求将被忽略。

从该方法的描述中查看此文:

  

如果您的应用显示提醒,播放声音或标记其图标,则必须   在启动周期中调用此方法以请求权限   以这些方式提醒用户。 (如果你,你也必须提出这个要求   想直接设置applicationIconBadgeNumber属性。)   通常,如果您的应用使用本地或远程,则会发出此请求   通知以提醒用户涉及您的应用的新信息。   您的应用首次启动并调用此方法即系统   询问用户是否应允许您的应用发送   通知并存储响应。此后,系统使用   存储的响应以确定您可能的实际通知类型   使用

     

调用此方法后,应用程序调用   application:didRegisterUserNotificationSettings:其app的方法   委托报告结果。您可以使用该方法来确定   如果您的请求被用户授予或拒绝。

     

建议您在安排之前调用此方法   本地通知或注册推送通知服务。   使用新的用户设置对象调用此方法将替换   先前的设置请求。支持自定义操作的应用必须   在notificationSettings中包含他们支持的所有操作   对象

答案 3 :(得分:0)

您需要在AppDelegate.m文件的didFinishLaunchingWithOptions方法中添加以下代码以进行注册本地通知

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
        if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)])
        {
            [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
            [[UIApplication sharedApplication] registerForRemoteNotifications];
        }
        else
        {
            [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
             (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)];
        }
}