2014-05-19 6 views
2

У меня был рабочий push в моем приложении, который находится в разработке и может отправлять push из PHP Script, который хранится в базе данных после запуска приложения. Но после отключения и повторного включения push в den Message-Center (проверено на iPhone) или удаления и повторной установки (проверено на iPad) приложения, я не могу снова нажать на эти устройства. Я получил новые токены для этих устройств и удалил старые токены из своей базы данных. Мой скрипт php для получения токенов, которые можно удалить (feedback.sandbox.push.apple.com:2196), не возвращает мне никакой информации, хотя соединение кажется прекрасным.iOS Push Notifications - no push после удаления и переустановки

я называю

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

каждый раз, когда приложение запускает, и приложение всегда регистрирует ровно в

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)aDeviceToken; 

Я могу видеть это, потому что я Habe в NSLog в этой точке, wichs показывает лексема

Вот мой код:

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound]; 
} 

-(void) application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 
    NSLog(@"Registered device with token %@", deviceToken); //Here i'm writing token into Database if not exists 
} 

-(void) application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { 
    NSLog(@"Registering device failed: %@", error); 
} 

Что я могу сделать?

Thnx & С уважением

Dirk

+0

Это больше похоже на вопрос бэкэнд мне. Попытайтесь увидеть, есть ли дубликаты в вашей базе данных для UDID вашего устройства. также зачем удалять существующие записи и создавать новые? Просто верните существующий токен для этого UDID, если он уже находится в databse, если запись не существует, запустите инструкцию insert. – Pancho

+0

У меня только 2 записи на данный момент, потому что я выясняю, как обрабатывать этот push-материал. Эти 2 записи - мой iPhone и мой iPad. Токены, которые находятся в моей базе данных, такие же, что и в моем AppDelegate.m, когда регистрируются устройства (запись NSLog). – Dirk

ответ

0

вы должны попросить нажимную регистрацию каждый раз, когда финишное приложение запуская таким образом:

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

затем проверить если обратный вызов возвращается к этой функции:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)aDeviceToken; 

или к этому fu nction:

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error; 

если это не удается зарегистрировать проверить, почему и комментарии, пожалуйста,

+0

я называю '[[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];' каждый раз, когда приложение запусков, и приложение всегда регистрирует ровно в '- (Недействительными) приложения: (UIApplication *) application didRegisterForRemoteNotificationsWithDeviceToken: (NSData *) aDeviceToken; '. Я вижу это, потому что в этот момент я использую NSLog, который показывает токен. – Dirk

+0

Вы обновляете сервер с помощью нового токена устройства? –

+0

Да, я знаю. И push-скрипт использует базу данных с последними токенами – Dirk