jak zdobyć token urządzenia w iOS?


Pracuję nad powiadomieniami push. Napisałem następujący kod, aby pobrać token urządzenia.
-(BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self.window addSubview:viewController.view];
[self.window makeKeyAndVisible];
NSLog(@"Registering for push notifications...");
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
return YES;
}-(void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
NSString *str = [NSString stringWithFormat:@"Device Token=%@",deviceToken];
NSLog(@"This is device token%@", deviceToken);
}-(void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err
{
NSString *str = [NSString stringWithFormat: @"Error: %@", err];
NSLog(@"Error %@",err);
}

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Wypróbuj ten kod:
// Register for Push Notification
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
{
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
[[UIApplication sharedApplication] registerForRemoteNotifications];
}
else
{
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)];
}- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings// NS_AVAILABLE_IOS(8_0);
{
[application registerForRemoteNotifications];
}- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken{ NSLog(@"deviceToken: %@", deviceToken);
NSString * token = [NSString stringWithFormat:@"%@", deviceToken];
//Format token as you need:
token = [token stringByReplacingOccurrencesOfString:@" " withString:@""];
token = [token stringByReplacingOccurrencesOfString:@">" withString:@""];
token = [token stringByReplacingOccurrencesOfString:@"<" withString:@""];}

Uwaga: symulator nie zwraca deviceToken, deviceToken jest zwracany tylko na urządzeniu z ważnym certyfikatem APNS
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W iOS 8 i iOS 9 musisz się zarejestrować, aby otrzymywać te powiadomienia:
NSLog(@"Registering for push notifications...");
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert categories:nil]];
[[UIApplication sharedApplication] registerForRemoteNotifications];

Pamiętaj, że jeśli chcesz również obsługiwać iOS 7, będziesz musiał wywołać istniejący kod we wcześniejszych wersjach iOS.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Włączyć "

Powiadomienia push

”w Xcode, rozwiąże to problem.
Targets -> Capabilities -> Push Notifications

Uwaga:


profile treningowe

powinien być w środku

aktywny

stan: schorzenie
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Mnie też przydarzył się ten sam problem, więc aby uzyskać token urządzenia, musisz użyć następującego kodu: -
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 
{
NSString *token = [[deviceToken description] stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"<>"]];
token = [token stringByReplacingOccurrencesOfString:@" " withString:@""];
NSLog(@"content---%@", token);
}

Nawet jeśli to nie zadziała, sprawdź swój profil obsługi administracyjnej. Powinien to być ten sam identyfikator aplikacji, za pomocą którego utworzyłeś certyfikat SSL na potrzeby powiadomień push.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Oto najnowszy kod Swift 4.0, więc możesz użyć następującego kodu, aby uzyskać token urządzenia.
import UserNotificationsif #available(iOS 10, *) {
UNUserNotificationCenter.current().delegate = self
UNUserNotificationCenter.current().requestAuthorization(options:[.badge, .alert, .sound]){ (granted, error) in
}
UIApplication.shared.registerForRemoteNotifications()
} else {
UIApplication.shared.registerUserNotificationSettings(UIUserNotificationSettings(types: [.badge, .sound, .alert], categories: nil))
UIApplication.shared.registerForRemoteNotifications()
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
let token = deviceToken.map { String(format: "%.2hhx", $0) }.joined() }
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Uzyskaj
token urządzenia
w

Swift 3

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
let token = String(format: "%@", deviceToken as CVarArg)
.trimmingCharacters(in: CharacterSet(charactersIn: "<>"))
.replacingOccurrences(of: " ", with: "")
print(token)
}

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się