Кнопки смахивания не приходят для удаленных уведомлений
Я пытаюсь добавить пользовательские кнопки в приложение IOS 8 для уведомлений PUSH, полученных в приложении чата.
Ниже мой код, но в Push-уведомлениях не отображаются кнопки корабля.
if([[UIApplication sharedApplication] respondsToSelector:@selector(isRegisteredForRemoteNotifications)])
{
//Defining Ap Actions Categories
UIMutableUserNotificationAction *replyAction =
[[UIMutableUserNotificationAction alloc] init];
// Define an ID string to be passed back to your app when you handle the action
replyAction.identifier = @"REPLY_ACTION";
// Localized string displayed in the action button
replyAction.title = NSLocalizedString(@"REPLY", nil);
// If you need to show UI, choose foreground
replyAction.activationMode = UIUserNotificationActivationModeForeground;
// Destructive actions display in red
replyAction.destructive = NO;
// Set whether the action requires the user to authenticate
replyAction.authenticationRequired = YES;
UIMutableUserNotificationAction *remindLaterAction =
[[UIMutableUserNotificationAction alloc] init];
// Define an ID string to be passed back to your app when you handle the action
remindLaterAction.identifier = @"REMIND_LATER_ACTION";
// Localized string displayed in the action button
remindLaterAction.title = NSLocalizedString(@"REMIND", nil);
// If you need to show UI, choose foreground
remindLaterAction.activationMode = UIUserNotificationActivationModeForeground;
// Destructive actions display in red
remindLaterAction.destructive = NO;
// Set whether the action requires the user to authenticate
remindLaterAction.authenticationRequired = YES;
// First create the category
UIMutableUserNotificationCategory *singleChatCategory = [[UIMutableUserNotificationCategory alloc] init];
// Identifier to include in your push payload and local notification
[singleChatCategory setIdentifier:@"SINGLE_CHAT"];
// Add the actions to the category and set the action context
[singleChatCategory setActions:@[replyAction, remindLaterAction]
forContext:UIUserNotificationActionContextDefault];
// Set the actions to present in a minimal context
[singleChatCategory setActions:@[replyAction]
forContext:UIUserNotificationActionContextMinimal];
NSSet *categories = [NSSet setWithObjects:singleChatCategory,nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound) categories:categories]];
[[UIApplication sharedApplication] registerForRemoteNotifications];
} else {
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound)];
}`
Я также поместил в локализованный строковый файл следующий код.
"SINGLECHAT_WITH_PREVIEW" = "%@:%@";
"SINGLECHAT_WITHOUT_PREVIEW" = "%@ %@ %@";
"REPLY" = "Reply";
"REMIND" = "Remind Me";
Вот подробности Push APS, которые я получаю с сервера в качестве userInfo.
{
aps = {
alert = {
category = "SINGLE_CHAT";
"loc-args" = (
"USER DEV12347",
"TEST NOTIFICATION MESSAGE"
);
"loc-key" = "SINGLECHAT_WITHOUT_PREVIEW";
title = Closrr;
};
badge = 1;
sound = "push_play.aiff";
};
from = "+67123456";
to = "+67890765";
type = 2;
}
Я сделал какую-нибудь ошибку? Пожалуйста посоветуй.
1 ответ
Решение
category
должен быть на первом уровне с вашей стороны aps
объект, не в пределах alert
:
{
aps = {
category = "SINGLE_CHAT";
alert = {
(...)