0

Appleプッシュ通知を使用しています。ご存知のように、devとprodの2つのゾーンがあります。

そこで、ゾーンの自動決定を作成することにしました。サブスクリプションの作成とプッシュの送信に使用する必要のあるゾーンです。

そしてembedded.mobileprovisionは私を助けます。開発規定には次の行が含まれていると判断しました。

<key>aps-environment</key>
<string>development</string>

およびアドホックおよび配布-これら:

<key>aps-environment</key>
<string>production</string>

だから私はこのコードを書いた:

+(BOOL)isDevelopmentProvision{

    BOOL isDev;

    NSString *profilePath = [[NSBundle mainBundle] pathForResource:@"embedded.mobileprovision" ofType:nil];
    NSString *profileAsString = [NSString stringWithContentsOfFile:profilePath encoding:NSISOLatin1StringEncoding error:NULL];
    NSRange apsenvironmentRange = [profileAsString rangeOfString:@"<key>aps-environment</key>"];

    if(apsenvironmentRange.location != NSNotFound){
        NSRange apstypeRange = [profileAsString rangeOfString:@"</" options:NSCaseInsensitiveSearch
                                                        range:NSMakeRange(apsenvironmentRange.location+apsenvironmentRange.length, 100)];

        isDev = [profileAsString rangeOfString:@"development" options:NSCaseInsensitiveSearch range:NSMakeRange(apsenvironmentRange.location+apsenvironmentRange.length, apstypeRange.location - (apsenvironmentRange.location+apsenvironmentRange.length))].location != NSNotFound;

    }

    return  isDev;
}

だから、それはうまくいきます。しかし、私のアプリがストアに送信された後、isDevは常にTRUEであり、私のアプリはプッシュに開発ゾーンを使用していることがわかります。

どうしたの?

4

1 に答える 1

0

(何らかの理由で) 場所が見つからない可能性がありますか? を初期化していませんisDev。ローカル変数なので、内容が予測できない場合があります。その値が正確にゼロの場合isDevのみを表します。FALSE/NOそれ以外の場合はすべて、 を表しTRUE/YESます。に変更する必要があります

BOOL isDev = NO;
于 2012-11-09T10:00:00.520 に答える