自动确定Apple推送通知的区域

时间:2012-11-09 09:42:03

标签: objective-c ios xcode apple-push-notifications

我使用Apple推送通知。如您所知,有两个区域:dev& amp;刺。

所以我决定创建区域的自动确定,我们必须使用哪个区域来创建订阅&发送推送。

embedded.mobileprovision帮助我。我认为开发条款包含以下几行:

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

和ad-hoc&amp;分配 - 这些:

<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,我的应用程序使用开发区域进行推送。

怎么了?

1 个答案:

答案 0 :(得分:0)

可能是因为某些原因找不到该位置?您没有初始化isDev。作为局部变量,它可能具有不可预测的内容。 isDev仅在其值正好为零时才代表FALSE/NO。在所有其他情况下,它将代表TRUE/YES。你应该把它改成

BOOL isDev = NO;