Служба push-уведомлений Apple не работает в Production Build с использованием Urban Airship в iPhone? - PullRequest
1 голос
/ 20 апреля 2011

Я использовал Apple Push Notification в своих приложениях, и он отлично работает в Adhoc Distribution. Я отправил свои приложения в AppStore, но push-уведомление не работает для моих приложений и получил сообщение типа «Apple отклонил токены устройства». Я использовал отдельные файлы .p12 для разработки и производства и загружал их в Urban Airship.

Примечание:

Но я использовал один и тот же ключ приложения и главный ключ приложения для разработки и производства. Так что это не работает для push-уведомлений. Если я создаю отдельные ключи для распространения и должен использовать эти ключи для моих сборок распространения. Так что это решит проблему. При создании ключей приложения в городском дирижабле я получаю три ключа, такие как Ключ приложения, Секрет приложения и Главный секрет приложения. Я использовал ключ приложения и мастер-ключ в своих приложениях. Это правильно? Поэтому, пожалуйста, ведите меня.

Спасибо

С уважением,
Пугал

1 Ответ

3 голосов
/ 20 июня 2012

Вам необходимо иметь:

  1. На портале обеспечения iOS Apple
    • Идентификаторы приложений
      • Создание SSL-сертификата для разработки Push
      • СозданиеSSL-сертификат производства Push
  2. В редакторе приложений Urban Airship
    • Создание приложения для разработки
      • Использование приложений для разработки Push SSLСертификат в записи сертификата Apple push
      • Скопировать ключ приложения (разработка)
      • Скопировать секрет приложения (разработка)
    • Создать приложениедля производства
      • Использование SSL-сертификата Apps Production Push в записи push-сертификата Apple
      • Копирование ключа приложения (производство)
      • Копирование секрета приложения (производство)
  3. Настройка подписи кода Xcode для использования сертификатов
  4. Я использую следующий код для установки ключей городского дирижабля во время компиляции на основенамакросы:

    - (void)urbanAirshipTakeoffWithLaunchOptions:(NSDictionary *)launchOptions {
    
    // Init Airship launch options
    NSMutableDictionary *takeOffOptions = [[NSMutableDictionary alloc] init];
    [takeOffOptions setValue:launchOptions forKey:UAirshipTakeOffOptionsLaunchOptionsKey];
    
    // Build the Urban Airship TakeOffOptions
    // Create Airship singleton that's used to talk to Urban Airship servers.
    NSMutableDictionary *airshipConfigOptions = [[NSMutableDictionary alloc] init];
    
    //Set up the Push keys
    NSLog(@"Appdelegate_Pad:didFinishLaunchingWithOptions - TARGET_1");
    [airshipConfigOptions setValue:@"xxx" forKey:@"DEVELOPMENT_APP_KEY"];
    [airshipConfigOptions setValue:@"xxx" forKey:@"DEVELOPMENT_APP_SECRET"];
    [airshipConfigOptions setValue:@"xxx" forKey:@"PRODUCTION_APP_KEY"];
    [airshipConfigOptions setValue:@"xxx" forKey:@"PRODUCTION_APP_SECRET"];
    
    // If CONFIGURATION_Debug is defined, then use the development servers, else use the production servers
    #ifdef CONFIGURATION_Debug
    [airshipConfigOptions setValue:@"NO" forKey:@"APP_STORE_OR_AD_HOC_BUILD"];
    NSLog(@"Using Development Servers at Urban Airship");
    #else
    [airshipConfigOptions setValue:@"YES" forKey:@"APP_STORE_OR_AD_HOC_BUILD"];
    NSLog(@"Using Production Servers at Urban Airship");
    #endif
    
    // Set and start Urban Airship
    [takeOffOptions setValue:airshipConfigOptions forKey:UAirshipTakeOffOptionsAirshipConfigKey];
    [UAirship takeOff:takeOffOptions];
    
    // Register for push notifications
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |
                                                                           UIRemoteNotificationTypeSound |
                                                                           UIRemoteNotificationTypeAlert)];
    

    }

Одной из лучших особенностей этой настройки является то, что я могу отправлять своим бета-тестерам push-сообщения, которые не видны моим производственным пользователям.(т.е.: новая бета на TestFlight!).

...