7

ビルドターゲットに応じて、XCodeでiOS用のAirshipConfig.plistを構成する可能性はありますか?現時点では、Urban AirshipはAirshipConfig.plistで設定されている2つの構成しかサポートしていませんが、3つ以上にしたいです。ターゲットに応じて設定ファイルを切り替えることができる場合、誰かが経験を持っていますか?UAは、ファイルに上記の名前を正確に付ける必要がありますか?

UAが2つを超える構成のオプションを提供しないことは本当に欠点です。UAのサポートによると、現時点では不可能だとのことですが、ファイルを動的に切り替えることもできるのではないかと思いました。

キムよろしく

4

2 に答える 2

6

私は自分自身を見つけました。興味のある方は:構成ごとにサブフォルダーを作成し、対応するAirshipConfig.plistをそこに配置してください。次に、構成にさまざまなターゲットを作成し、適切なファイルのターゲットメンバーシップをそのターゲットに設定します。それで全部です。

于 2013-01-17T09:39:08.150 に答える
1

airshipConfigOptionsこれが、3つのターゲットのを生成するために使用するコードです。ターゲットには、各ターゲットのビルド設定にマクロがあります:{TARGET_A、TARGET_B、TARGET_C}:

- (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.
    // Please populate AirshipConfig.plist with your info from http://go.urbanairship.com
    NSMutableDictionary *airshipConfigOptions = [[NSMutableDictionary alloc] init];

    /*
     * Set up the Push keys based on target
     */
    _uaApp = @"unknown";

    // iFlightBag TARGET_A
#ifdef TARGET_A
    NSLog(@"Appdelegate_Pad:didFinishLaunchingWithOptions - TARGET_A");
    [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"];
    _uaApp = "@TARGET_A";
#endif

    // iFlightBag TARGET_B
#ifdef TARGET_B
    NSLog(@"Appdelegate_Pad:didFinishLaunchingWithOptions - TARGET_B");
    [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"];
    _uaApp = @"TARGET_B";
#endif

    // iFlightBag 
#ifdef TARGET_C
    NSLog(@"Appdelegate_Pad:didFinishLaunchingWithOptions - TARGET_C");
    [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"];
    _uaApp = @"TARGET_C";
#endif

    // 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");
    _uaApp = [_uaApp stringByAppendingString:@"_dev"];
#else
    [airshipConfigOptions setValue:@"YES" forKey:@"APP_STORE_OR_AD_HOC_BUILD"];
    NSLog(@"Using Production Servers at Urban Airship");
#endif


    // Erase stored user informaton - set in settings?
    if(self.getEraseUser) [airshipConfigOptions setValue:@"YES" forKey:@"DELETE_KEYCHAIN_CREDENTIALS"];

    // Set and start Urban Airship
    [takeOffOptions setValue:airshipConfigOptions forKey:UAirshipTakeOffOptionsAirshipConfigKey];
    [UAirship takeOff:takeOffOptions];

    // -----
    // Set up Urban Airship Inbox
    // Set up the list and message view controllers for the master and detail panels, respectively.

    // If the application gets an UAInbox message id on launch open it up immediately. Only works for the default inbox

    //Init the UI
    [UAInbox useCustomUI:[UAInboxUI class]];//sample UI implementation
    [UAInbox shared].pushHandler.delegate = [UAInboxUI shared];

    // If the application gets an UAInbox message id on launch open it up immediately.
    // Only works for the default inbox
    [UAInboxUI shared].inboxParentController = self.tabcontroller;
    [UAInboxPushHandler handleLaunchOptions:launchOptions];

    if ([[UAInbox shared].pushHandler hasLaunchMessage]) {
        [[[UAInbox shared] uiClass] loadLaunchMessage];
    }

    // Register for notifications
    [[UAPush shared] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |
                                                         UIRemoteNotificationTypeSound |
                                                         UIRemoteNotificationTypeAlert)];
}
于 2013-01-18T05:06:56.620 に答える