推送通知无法获取设备令牌
Push Notifications Cannot get Device Token
我正在尝试获取设备令牌,以便向其发送通知,但我一直收到错误 "enabledRemoteNotificationTypes is not supported in iOS 8.0 and later."
设备已注册,因为我可以在 phone 的通知设置中关闭和打开通知。这是我用来尝试检索令牌的代码:
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
NSString *str = [NSString stringWithFormat:@"Device Token=%@",deviceToken];
NSLog(@"This is device token%@", deviceToken);
}
我正在使用此代码注册设备:
if ([application respondsToSelector:@selector(isRegisteredForRemoteNotifications)])
{
// iOS 8 Notifications
[application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
[application registerForRemoteNotifications];
NSLog(@"ios 8+: %@");
}
else
{
// iOS < 8 Notifications
[application registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)];
NSLog(@"< ios 8+: %@");
}
理想情况下,我想检索设备令牌并将它们发送到 mysql 数据库,不知道如何执行此操作,因为我是一名网络开发人员并且不太熟悉 Objective C
这是您应该注册远程通知的方式:
if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerForRemoteNotifications)])
{
UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:mySettings];
[[UIApplication sharedApplication] registerForRemoteNotifications];
} else {
UIRemoteNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:types];
}
此外,如果你需要将它发送到你的后端,你首先看这里并在didRegisterForRemoteNotificationsWithDeviceToken:
中提取一个字符串令牌:Iphone device token - NSData or NSString
然后使用 AFNetworking 或 NSURLSession 将其发送到您的后端 API。
看看这里例如:Send POST request using NSURLSession
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
{
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
}
else
{
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)];
}
return YES;
}
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
NSString *myDeviceToken = [[deviceToken description] stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"<>"]];
myDeviceToken = [myDeviceToken stringByReplacingOccurrencesOfString:@" " withString:@""];
NSLog(@"Device Token: %@", myDeviceToken);
}
使用上面的代码获取设备令牌,并获取远程通知请确保您的后台模式已开启以进行远程通知
我正在尝试获取设备令牌,以便向其发送通知,但我一直收到错误 "enabledRemoteNotificationTypes is not supported in iOS 8.0 and later."
设备已注册,因为我可以在 phone 的通知设置中关闭和打开通知。这是我用来尝试检索令牌的代码:
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
NSString *str = [NSString stringWithFormat:@"Device Token=%@",deviceToken];
NSLog(@"This is device token%@", deviceToken);
}
我正在使用此代码注册设备:
if ([application respondsToSelector:@selector(isRegisteredForRemoteNotifications)])
{
// iOS 8 Notifications
[application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
[application registerForRemoteNotifications];
NSLog(@"ios 8+: %@");
}
else
{
// iOS < 8 Notifications
[application registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)];
NSLog(@"< ios 8+: %@");
}
理想情况下,我想检索设备令牌并将它们发送到 mysql 数据库,不知道如何执行此操作,因为我是一名网络开发人员并且不太熟悉 Objective C
这是您应该注册远程通知的方式:
if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerForRemoteNotifications)])
{
UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:mySettings];
[[UIApplication sharedApplication] registerForRemoteNotifications];
} else {
UIRemoteNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:types];
}
此外,如果你需要将它发送到你的后端,你首先看这里并在didRegisterForRemoteNotificationsWithDeviceToken:
中提取一个字符串令牌:Iphone device token - NSData or NSString
然后使用 AFNetworking 或 NSURLSession 将其发送到您的后端 API。 看看这里例如:Send POST request using NSURLSession
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
{
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
}
else
{
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)];
}
return YES;
}
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
NSString *myDeviceToken = [[deviceToken description] stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"<>"]];
myDeviceToken = [myDeviceToken stringByReplacingOccurrencesOfString:@" " withString:@""];
NSLog(@"Device Token: %@", myDeviceToken);
}
使用上面的代码获取设备令牌,并获取远程通知请确保您的后台模式已开启以进行远程通知