Как получить Push-уведомление в приложении iphone? - PullRequest
0 голосов
/ 11 июля 2011

Я создал .pem файл, следуя инструкциям

  1. Войдите на Портал для разработчиков iPhone.
  2. Выберите идентификаторы приложений в меню справа.
  3. Создание идентификатора приложения без подстановочного знака.
  4. Нажмите ссылку Настроить рядом с этим идентификатором приложения, а затем нажмите кнопку, чтобы запустить мастер для создания нового SSL-сертификата разработки Push.
  5. Загрузите этот сертификат и дважды щелкните по aps_developer_identity.cer, чтобы импортировать его в цепочку для ключей
  6. Запустите помощник по связке ключей и нажмите «Мои сертификаты» слева
  7. Разверните Apple IOS Development Push Services и выберите Apple IOS Development Push Services И мой закрытый ключ
  8. Щелкните правой кнопкой мыши и выберите «Экспортировать 2 элемента ...» и сохраните как cert.p12.
  9. Откройте Терминал и перейдите в каталог, в котором будет сохранен файл cert.p12 и преобразуйте пакет сертификатов PKCS12 в формат PEM, используя эту команду openssl pkcs12 -in cert.p12 -out cert.pem -nodes -clcerts 10. Теперь я использую этот файл PEM в качестве сертификата в ApnsPHP!

пока я использую URL в браузере, он отображается; { "АПС": { "бдительные": "привет", "знак": 1, "звук": "beep.wav"}}

Я использую этот код для получения уведомления в приложении iphone

- (void)applicationDidFinishLaunching:(UIApplication *)application { 

    [self.window addSubview:tabBarController.view];
    [self.window makeKeyAndVisible];


    NSLog(@"\n\n\n\nRegistering for push notifications...\n\n\n\n");    
    [[UIApplication sharedApplication] 
     registerForRemoteNotificationTypes:
     (UIRemoteNotificationTypeAlert | 
      UIRemoteNotificationTypeBadge | 
      UIRemoteNotificationTypeSound)];

}


- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken {
    NSString *token = [[devToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
    token = [token stringByReplacingOccurrencesOfString:@" " withString:@""];

    NSLog(@"\n\n\n\n\n device token===%@\n\n\n\n",token);
    //DeviceRegisterer *registrar = [[DeviceRegisterer alloc] init];
    //[registrar registerDeviceWithToken:token];
}

- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {
    NSLog(@"failed to regiser %@", err);
}

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
    NSLog(@"notification options %@", userInfo);

    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Super" message:@"welcome" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
    [alert release];

    for (id key in userInfo) {


        NSLog(@"key: %@, value: %@", key, [userInfo objectForKey:key]);
        UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"Your title here!" message:@"this gets covered" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
        UITextField *myTextField = [[UITextField alloc] initWithFrame:CGRectMake(12.0, 45.0, 260.0, 25.0)];
        [myTextField setBackgroundColor:[UIColor whiteColor]];
        myTextField.text = [userInfo objectForKey:key];
        [myAlertView addSubview:myTextField];
        [myAlertView show];
        [myAlertView release];

    }    

}

Но я не могу получить уведомление. Пожалуйста, помогите решить эту проблему.

Заранее спасибо, Senthilkumar

Ответы [ 2 ]

0 голосов
/ 01 августа 2011

Я решил эту проблему.Проблема в прикреплении файла php .pem.спасибо за предоставленную идею.

0 голосов
/ 11 июля 2011

Вы не используете сервер для отправки сообщения. Ключ pem предназначен для использования сервером для отправки сообщения. Я думаю, что вы не можете использовать приложение iphone для прямой отправки push-сообщения. Если ваш сервер использует php, попробуйте найти на этом сайте код для доставки уведомлений. Примечание: на моем сервере код ApnsPHP вообще не работает, я использовал простой скрипт php, найденный в stackOverflow (извините, не помню ссылку) для управления им и работает.

...