我使用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,我的应用程序使用开发区域进行推送。
怎么了?
答案 0 :(得分:0)
可能是因为某些原因找不到该位置?您没有初始化isDev
。作为局部变量,它可能具有不可预测的内容。 isDev
仅在其值正好为零时才代表FALSE/NO
。在所有其他情况下,它将代表TRUE/YES
。你应该把它改成
BOOL isDev = NO;