在App Purchase iOS中访问AppleId

有没有办法在购买完成后进行应用内购买(电子邮件或内部ID)时访问用户在身份validation对话框中输入的苹果ID?

在官方应用程序中,无法访问它,因为它会带来很大的安全漏洞(例如,可以轻松地将垃圾邮件发送到指定的电子邮件地址)。

但是,如果您使用的是越狱设备,则可以从钥匙串获取必要的信息。 相应的钥匙串项的svce键设置为com.apple.itunesstored.token ,电子邮件地址对应于acct键。 这些条目的安全性类是kSecClassGenericPassword 。 只需确保使用适当的权利对您的应用进行协同设置(您需要"keychain-access-groups" = "*" )。

检索所需信息的实际示例如下:

 #import  #import  #import  int main() { NSMutableDictionary *query = [NSMutableDictionary dictionary]; [query setObject:kSecClassGenericPassword forKey:kSecClass]; [query setObject:kSecMatchLimitAll forKey:kSecMatchLimit]; [query setObject:kCFBooleanTrue forKey:kSecReturnAttributes]; [query setObject:kCFBooleanTrue forKey:kSecReturnRef]; [query setObject:kCFBooleanTrue forKey:kSecReturnData]; NSArray *items = nil; SecItemCopyMatching(query, &items); for (NSDictionary *item in items) { if ([[item objectForKey:@"svce"] isEqualToString:@"com.apple.itunesstored.token"]) { NSLog(@"Found iTunes Store account: %@", [item objectForKey:@"acct"]); } } return 0; } 

entitlements.xml文件(使用ldid -Sentitlemens.xml binary文件进行ldid -Sentitlemens.xml binary ):

   keychain-access-groups  *