Клиент для iPhone не регистрируется на push? - PullRequest
0 голосов
/ 29 сентября 2011

Я "думаю", что мое приложение не регистрируется для push-уведомлений.

Это должно быть так же просто, как добавить код в didFinishLaunchingWithOptions, а затем при тестировании должно появиться (но не в моем случае) предупреждение приложения о push-уведомлениях.

мой код:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.

self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];

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

return YES;
}

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

Есть идеи? Я не получаю толчок Не позволяю / хорошо всплывающее окно.

push

Ответы [ 3 ]

1 голос
/ 29 сентября 2011

Вам необходимо реализовать методы делегата и настроить сертификаты на вашем сервере. Вот некоторый код для стороны objc:

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken {
    NSString *token = [[devToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
    [[NSUserDefaults standardUserDefaults] setObject:token forKey:@"token"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {
    [[NSUserDefaults standardUserDefaults] setObject:[NSString stringWithString:@""] forKey:@"token"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
    UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"] 
                                                     message:[[userInfo objectForKey:@"aps"] objectForKey:@"alert"] 
                                                    delegate:self 
                                           cancelButtonTitle:@"OK" 
                                           otherButtonTitles:nil] autorelease];
    [alert show];
}
1 голос
/ 29 сентября 2011

У вас есть этот код в вашем делегате?

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 

    NSString *str = [NSString 
        stringWithFormat:@"Device Token=%@",deviceToken];
    NSLog(str);

}

Вы должны сгенерировать токен устройства и поместить его на свой сервер, куда хотите отправить уведомление.

Если, скажем, у вас все в порядке с частью iphone, топроблема может заключаться в коде вашего сервера, где вы отправляете уведомление.

Посмотрите этот учебник об push-уведомлении: http://mobiforge.com/developing/story/programming-apple-push-notification-services

0 голосов
/ 29 сентября 2011

Да, у меня есть и другая часть кода.У меня сложилось впечатление, что всплывающее окно произойдет, если серверные вещи были уже сделаны или нет?

Я получил его на работу.Я должен был получить новый файл обеспечения.Удалить старую.Перейдите в папку приложения.Просмотр содержимого файла проекта.Откройте в текстовом редакторе файл с ключом инициализации и замените ключ (две точки) новым кодом ключа.

Теперь все работает.Спасибо за помощь.

...