У меня есть встроенное уведомление push push apple и сталкивается с странной проблемой в моем приложении. когда я непосредственно устанавливаю приложение через Xcode через usb-соединение, то токен устройства генерируется в базе данных правильно, а push-уведомление работает нормально. но когда я создаю IPA и устанавливаю приложение через созданную ipa на одном устройстве, то токен устройства генерируется неправильно, а push-уведомление не работает. Ниже приведен мой код:Тоже маркер устройства APNS неправильно генерируется
if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) {
[[UIApplication sharedApplication] registerUserNotificationSettings: [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
} else {
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)];
}
application.applicationIconBadgeNumber = 0;
#ifdef __IPHONE_8_0
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings
*)notificationSettings {
[application registerForRemoteNotifications];
}
#endif
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData
*)deviceToken {
const unsigned *tokenData = deviceToken.bytes;
NSString *deviceTokenString = [NSString stringWithFormat:@"%08x%08x%08x%08x%08x%08x%08x%08x", ntohl(tokenData[0]),ntohl(tokenData[1]),ntohl(tokenData[2]),ntohl(tokenData[3]),ntohl(tokenData[4]),ntohl(tokenData[5]),ntohl(tokenData[6]),ntohl(tokenData[7])];
[[NSUserDefaults standardUserDefaults]setObject:deviceTokenString forKey:@"devicetoken"];
NSLog(@"Device Token = %@", deviceTokenString);
}
//Failed to Register for Remote Notifications
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
NSLog(@"Error in registration. Error: %@", error);
}
Обычно это так. Но также можно установить установку непосредственно как adhoc-release с помощью сертификата adhoc. (Я сам отлаживаю объявление ad-hoc push таким образом. Быстрее, чем создание специальной публикации, загрузка на Apple и т. Д. Проблема заключается в том, что она не позволяет отлаживать, если она установлена как ad-hoc напрямую. (Приложение закрывается через несколько секунд. Но опять же, я могу открывать Устройства и видеть выход консоли в любом случае). –