I am trying to put custom buttons in my IOS 8 application for the PUSH Notifications received in my chat app.
Below is my code but the Push notifications are not showing the ship buttons.
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)];
}`
I have also put in the localised string file following code.
"SINGLECHAT_WITH_PREVIEW" = "%@:%@";
"SINGLECHAT_WITHOUT_PREVIEW" = "%@ %@ %@";
"REPLY" = "Reply";
"REMIND" = "Remind Me";
Here is the Push APS details I am getting from server as userInfo as well.
{
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;
}
Have I done any mistake ?? Please advice.
The
category
should be at the first level of youaps
object, not within thealert
:Reference: https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html#//apple_ref/doc/uid/TP40008194-CH100-SW1