我添加了一个本地通知,因此当我的应用程序在打开时进行推送时,仍会有弹出窗口和声音。 它在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);
}
答案 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)];
}
}