I'm working on an application that is written in Objective-C++ and was running into some trouble when attempting to register for multiple types of push notifications. Every time I built the application I would receive the below exception if I attempted to register for more than one push notification type:
invalid conversion from 'int' to 'UIRemoteNotificationType'
It turns out this is because implicit conversion from
int to an enum is disallowed in Objective-C++. in order to overcome you need to change:
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeBadge)];
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationType)(UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeBadge)];
The difference being the cast to
(UIRemoteNotificationType) in the second snippet of code
Interesting to note that
registerForRemoteNotificationTypes uses a bit mask to specify which types of notification you register for.
What do you think? Let me know by getting in touch on Twitter - @wibosco