Purpose string
A purpose string is the sentence iOS shows the user in a permission prompt, supplied by you as an NSxxxUsageDescription key in Info.plist.
The keys are named after what they gate: NSCameraUsageDescription, NSMicrophoneUsageDescription, NSPhotoLibraryUsageDescription, NSPhotoLibraryAddUsageDescription, NSLocationWhenInUseUsageDescription, NSLocationAlwaysAndWhenInUseUsageDescription, NSContactsUsageDescription, NSCalendarsUsageDescription, NSFaceIDUsageDescription, NSUserTrackingUsageDescription for App Tracking Transparency, and more besides.
There are two separate failure modes and they get conflated. If the key is missing entirely and your code requests the permission, the app terminates at that moment. Not an error, not a denied prompt, a crash. Uploads also get rejected for absent strings on APIs the binary clearly touches, arriving as an ITMS- error rather than a review comment.
If the key is present but the text is vague, you get a guideline rejection instead. "This app requires access to your location" explains nothing, and reviewers reject strings that name the permission without naming the benefit. Write the reason: "Used to show fuel stops near your current position." One sentence, specific, in the user's terms.
Two practical notes. Frameworks add these requirements silently, so a dependency can introduce a permission you never asked for. And cross-platform toolchains often write Info.plist at build time, so editing the file in the built app does nothing; the string has to come from your project configuration.
See also: privacy nutrition label, IPA, build.