UIRemoteNotificationType invalid conversion

2020-07-13 08:15发布

问题:

I'm trying to use this fairly standard line of code in my app:

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];

But am receiving the follow error:

error: invalid conversion from 'int' to 'UIRemoteNotificationType'

It works if I only use one of the notification types but fails every time if I try and use more than one. Any ideas what I'm doing wrong?

回答1:

You're probably using Objective-C++, which implicit conversion from int to an enum is disallowed.

Try to add an explicit cast:

[… registerForRemoteNotificationTypes:
     (UIRemoteNotificationType)(UIRemoteNotificationTypeAlert | …)];


回答2:

You have to cast the result as UIRemoteNotificationType:

(UIRemoteNotificationType)(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)

This way the method got what it is expecting.



回答3:

Use this: This will solve ur problem.

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationType)(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)];