objective-cioscocoamac-app-storeappirater

App Store ID via Appirater different than ID from plist, and apparently random


I'm having an issue with grabbing the App Store ID from my plist, and using it with Appirater. I NSLogged the URL that was being used when the user pushes "Rate Now", and the App Store ID is way different from the App Store ID I set in Info.plist. No idea where it is getting these numbers from -- they are a different set of 9 numbers each time. This is really strange.

The code in Appirater.m that deals with grabbing the App Store ID and using it in the link looks like this: NSString *const kAppiraterAppIdBundleKey = @"AppStoreId";

NSString *templateReviewURL = @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=APP_ID";

....

+ (NSString*)appStoreAppID {

    NSString* value = [[[NSBundle mainBundle] infoDictionary] objectForKey:kAppiraterAppIdBundleKey];

    NSAssert1(value, @"Error - you have not specified %@ property in your info.plist", kAppiraterAppIdBundleKey);

    return value;

}
//...

+ (void)rateApp {
    //...
    NSString *reviewURL = [templateReviewURL stringByReplacingOccurrencesOfString:@"APP_ID" withString:[NSString stringWithFormat:@"%d", [self appStoreAppID]]];
    //...
}

I added a field in the plist called "AppStoreId", and entered the 9 digit code. I made it a string type. Now, the code runs perfectly when I replace "APP_ID" with the actual 9 digit code in that iTunes link above, but when I keep it as APP_ID, I get the error "Cannot connect to the iTunes Store.", and the NSLog output has 9 random numbers in the link, and again, they are different each time.

This is probably an easy fix, but I can't seem to figure it out.


Solution

  • Random numbers? You're using:

    [NSString stringWithFormat:@"%d", [self appStoreAppID]]
    

    where appStoreAppID is an NSString.

    So you're replacing "APP_ID" with the pointer to the NSString, not the contents of the NSString.

    Just use %@ instead of %d.