2
購買完成後,有沒有一種方法可以訪問用戶在身份驗證對話框中輸入的Apple ID,並在購買內容時進行應用內購買(電子郵件或其內部ID)?In App Purchase iOS訪問AppleId
購買完成後,有沒有一種方法可以訪問用戶在身份驗證對話框中輸入的Apple ID,並在購買內容時進行應用內購買(電子郵件或其內部ID)?In App Purchase iOS訪問AppleId
在官方應用程序中,無法訪問它,因爲它會施加很大的安全漏洞(例如,可以輕鬆地將垃圾郵件發送到指定的電子郵件地址)。
但是,如果您使用的是越獄設備,您可以從鑰匙串中獲取必要的信息。相應的鑰匙串項目的密鑰設置爲com.apple.itunesstored.token
,電子郵件地址對應於acct
密鑰。這些條目的安全等級是kSecClassGenericPassword
。只要確保您使用適當的權利對您的應用程序進行了編碼(您需要"keychain-access-groups" = "*"
)。
檢索所需要的信息會是這樣的一個實際的例子:
#import <CoreFoundation/CoreFoundation.h>
#import <Foundation/Foundation.h>
#import <Security/Security.h>
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
協同設計):
<plist>
<dict>
<key>keychain-access-groups</key>
<array>
<string>*</string>
</array>
</dict>
</plist>