1. 怎樣用Qt獲取CPU的ID,求代碼
X86處理器的型號,信息處理器家庭,高速緩存尺寸,時鍾速度(頻率)和製造商codename 等,存放在處理器的CPU ID寄存器組中。
通過執行CPU ID指令集查詢,即可獲取處理器的相關信息。CPU ID匯編指令使用使用eax作為輸入參數(有時也用到ecx),eax、ebx、ecx、edx作為輸出參數。
mov eax, 1
cpuid
在C語言中(VC6以上)實現方法為:
32位模式下,可使用內嵌匯編來調用cpuid指令;64位模式下,VC編譯器不支持內嵌匯編,此時可使用微軟提供的Intrinsics函數,來執行cpuid指令,該函數支持32位和64位,該函數包含在 <intrin.h>中。
2. VC++MFC中怎樣獲得控制項ID
VC++MFC中,通過控制項對象或控制項指針獲取本控制項ID可以使用GetDlgCtrlID函數,示例如下:
CEdit*pEdit=(CEdit*)GetDlgItem(IDC_EDIT1);//獲取控制項指針
intnID=pEdit->GetDlgCtrlID();//獲取該控制項的ID
這是通過代碼獲取控制項ID的方法,需要注意的是,這樣獲取的是一個「數字」ID,而不是在程序代碼中使用的宏ID(如IDC_EDIT1)的名字,這個控制項的宏ID名在編譯之後是無法獲取的。
IDC_EDIT1 這樣的控制項ID,實際是定義在resource.h中的一個宏定義,用於方便代碼和對話框資源的管理,實際上,控制項的ID就是一個數字,你可以在該.h頭文件中看到具體的定義,也可以在資源編輯器中,點擊控制項,查看它的「宏」ID。
3. 如何獲取不變的UDID
1)iOS 5.0
iOS 2.0版本以後UIDevice提供一個獲取設備唯一標識符的方法uniqueIdentifier,通過該方法我們可以獲取設備的序列號,這個也是目前為止唯一可以確認唯一的標示符。好景不長,因為該唯一標識符與手機一一對應,蘋果覺得可能會泄露用戶隱私,所以在 iOS 5.0之後該方法就被廢棄掉了。
而且蘋果做的更狠,今年5月份以後提交App Store的產品都不允許再用uniqueIdentifier介面,甚至有些朋友因為代碼中有UDID還被打回來,看來這條路是被封死了。
2)iOS 6.0
iOS 6.0系統新增了兩個用於替換uniqueIdentifier的介面,分別是:identifierForVendor,advertisingIdentifier。
identifierForVendor介面的官方文檔介紹如下:
The value of this property is the same for apps that come from the same vendor running on the same device. A different value is returned for apps on the same device that come from different vendors, and for apps on different devices regardless of vendor.
The value of this property may be nil if the app is running in the background, before the user has unlocked the device the first time after the device has been restarted. If the value is nil, wait and get the value again later.
The value in this property remains the same while the app (or another app from the same vendor) is installed on the iOS device. The value changes when the user deletes all of that vendor』s apps from the device and subsequently reinstalls one or more of them. Therefore, if your app stores the value of this property anywhere, you should gracefully handle situations where the identifier changes.
大概意思就是「同一開發商的APP在指定機器上都會獲得同一個ID。當我們刪除了某一個設備上某個開發商的所有APP之後,下次獲取將會獲取到不同的ID。」 也就是說我們通過該介面不能獲取用來唯一標識設備的ID,問題總是難不倒聰明的程序員,於是大家想到了使用WiFi的mac地址來取代已經廢棄了的uniqueIdentifier方法。具體的方法晚上有很多,大家感興趣的可以自己找找,這兒提供一個網址: http://stackoverflow.com/questions/677530/how-can-i-programmatically-get-the-mac-address-of-an-iphone
3)iOS 7.0
iOS 7中蘋果再一次無情的封殺mac地址,使用之前的方法獲取到的mac地址全部都變成了02:00:00:00:00:00。有問題總的解決啊,於是四處查資料,終於有了思路是否可以使用KeyChain來保存獲取到的唯一標示符呢,這樣以後即使APP刪了再裝回來,也可以從KeyChain中讀取回來。有了方向以後就開始做,看關於KeyChain的官方文檔,看官方使用KeyChain的Demo,大概花了一下午時間,問題終於解決了。
二、KeyChain介紹
我們搞iOS開發,一定都知道OS X裡面的KeyChain(鑰匙串),通常要鄉鎮及調試的話,都得安裝證書之類的,這些證書就是保存在KeyChain中,還有我們平時瀏覽網頁記錄的賬號密碼也都是記錄在KeyChain中。iOS中的KeyChain相比OS X比較簡單,整個系統只有一個KeyChain,每個程序都可以往KeyChain中記錄數據,而且只能讀取到自己程序記錄在KeyChain中的數據。iOS中Security.framework框架提供了四個主要的方法來操作KeyChain:
// 查詢
OSStatus SecItemCopyMatching(CFDictionaryRef query, CFTypeRef *result);
// 添加
OSStatus SecItemAdd(CFDictionaryRef attributes, CFTypeRef *result);
// 更新KeyChain中的Item
OSStatus SecItemUpdate(CFDictionaryRef query, CFDictionaryRef attributesToUpdate);
// 刪除KeyChain中的Item
OSStatus SecItemDelete(CFDictionaryRef query)
這四個方法參數比較復雜,一旦傳錯就會導致操作KeyChain失敗,這塊兒文檔中介紹的比較詳細,大家可以查查官方文檔Keychain Services Reference。
前面提到了每個APP只允許訪問自己在KeyChain中記錄的數據,那麼是不是就沒有別的辦法訪問其他APP存在KeyChain的數據了?
蘋果提供了一個方法允許同一個發商的多個APP訪問各APP之間的途徑,即在調SecItemAdd添加數據的時候指定AccessGroup,即訪問組。一個APP可以屬於同事屬於多個分組,添加KeyChain數據訪問組需要做一下兩件事情:
a、在APP target的bulibSetting裡面設置Code Signing Entitlements,指向包含AceessGroup的分組信息的plist文件。該文件必須和工程文件在同一個目錄下,我在添加訪問分組的時候就因為plist文件位置問題,操作KeyChain失敗,查找這個問題還花了好久的時間。
b、在工程目錄下新建一個KeychainAccessGroups.plist文件,該文件的結構中最頂層的節點必須是一個名為「keychain-access-groups」的Array,並且該Array中每一項都是一個描述分組的NSString。對於String的格式也有相應要求,格式為:"AppIdentifier.com.***",其中APPIdentifier就是你的開發者帳號對應的ID。
c、在代碼中往KeyChain中Add數據的時候,設置kSecAttrAccessGroup,代碼如下:
NSString *accessGroup = [NSString stringWithUTF8String:"APPIdentifier.com.cnblogs.smileEvday"];
if (accessGroup != nil)
{
#if TARGET_IPHONE_SIMULATOR
// Ignore the access group if running on the iPhone simulator.
//
// Apps that are built for the simulator aren't signed, so there's no keychain access group
// for the simulator to check. This means that all apps can see all keychain items when run
// on the simulator.
//
// If a SecItem contains an access group attribute, SecItemAdd and SecItemUpdate on the
// simulator will return -25243 (errSecNoAccessForItem).
#else
[dictForQuery setObject:accessGroup forKey:(id)kSecAttrAccessGroup];
#endif
}
這段代碼是從官方的Demo中直接拷貝過來的,根據注釋我們可以看到,模擬器是不支持AccessGroup的,所以才行了預編譯宏來選擇性添加。
註:appIdentifer就是開發者帳號的那一串標識,如下圖所示:
打開xcode的Organizer,選擇Device選項卡,連接設備就可以看到設備上安裝的開發者賬號描述文件列表,其中第五列最開始的10個字元即為App Identifier,這塊兒前面寫的不是很清楚,好多朋友加我qq問我,今天特地補上。
三、使用KeyChain保存和獲取UDID
說了這么多終於進入正題了,如何在iOS 7上面獲取到不變的UDID。我們將第二部分所講的知識直接應用進來就可以了輕松達到我們要的效果了,下面我們先看看往如何將獲取到的identifierForVendor添加到KeyChain中的代碼。
+ (BOOL)settUDIDToKeyChain:(NSString*)udid
{
NSMutableDictionary *dictForAdd = [[NSMutableDictionary alloc] init];
[dictForAdd setValue:(id)kSecClassGenericPassword forKey:(id)kSecClass];
[dictForAdd setValue:[NSString stringWithUTF8String:kKeychainUDIDItemIdentifier] forKey:kSecAttrDescription];
[dictForAdd setValue:@"UUID" forKey:(id)kSecAttrGeneric];
// Default attributes for keychain item.
[dictForAdd setObject:@"" forKey:(id)kSecAttrAccount];
[dictForAdd setObject:@"" forKey:(id)kSecAttrLabel];
// The keychain access group attribute determines if this item can be shared
// amongst multiple apps whose code signing entitlements contain the same keychain access group.
NSString *accessGroup = [NSString stringWithUTF8String:kKeyChainUDIDAccessGroup];
if (accessGroup != nil)
{
#if TARGET_IPHONE_SIMULATOR
// Ignore the access group if running on the iPhone simulator.
//
// Apps that are built for the simulator aren't signed, so there's no keychain access group
// for the simulator to check. This means that all apps can see all keychain items when run
// on the simulator.
//
// If a SecItem contains an access group attribute, SecItemAdd and SecItemUpdate on the
// simulator will return -25243 (errSecNoAccessForItem).
#else
[dictForAdd setObject:accessGroup forKey:(id)kSecAttrAccessGroup];
#endif
}
const char *udidStr = [udid UTF8String];
NSData *keyChainItemValue = [NSData dataWithBytes:udidStr length:strlen(udidStr)];
[dictForAdd setValue:keyChainItemValue forKey:(id)kSecValueData];
OSStatus writeErr = noErr;
if ([SvUDIDTools getUDIDFromKeyChain]) { // there is item in keychain
[SvUDIDTools updateUDIDInKeyChain:udid];
[dictForAdd release];
return YES;
}
else { // add item to keychain
writeErr = SecItemAdd((CFDictionaryRef)dictForAdd, NULL);
if (writeErr != errSecSuccess) {
NSLog(@"Add KeyChain Item Error!!! Error Code:%ld", writeErr);
[dictForAdd release];
return NO;
}
else {
NSLog(@"Add KeyChain Item Success!!!");
[dictForAdd release];
return YES;
}
}
[dictForAdd release];
return NO;
}
上面代碼中,首先構建一個要添加到KeyChain中數據的Dictionary,包含一些基本的KeyChain Item的數據類型,描述,訪問分組以及最重要的數據等信息,最後通過調用SecItemAdd方法將我們需要保存的UUID保存到KeyChain中。
獲取KeyChain中相應數據的代碼如下:
+ (NSString*)getUDIDFromKeyChain
{
NSMutableDictionary *dictForQuery = [[NSMutableDictionary alloc] init];
[dictForQuery setValue:(id)kSecClassGenericPassword forKey:(id)kSecClass];
// set Attr Description for query
[dictForQuery setValue:[NSString stringWithUTF8String:kKeychainUDIDItemIdentifier]
forKey:kSecAttrDescription];
// set Attr Identity for query
NSData *keychainItemID = [NSData dataWithBytes:kKeychainUDIDItemIdentifier
length:strlen(kKeychainUDIDItemIdentifier)];
[dictForQuery setObject:keychainItemID forKey:(id)kSecAttrGeneric];
// The keychain access group attribute determines if this item can be shared
// amongst multiple apps whose code signing entitlements contain the same keychain access group.
NSString *accessGroup = [NSString stringWithUTF8String:kKeyChainUDIDAccessGroup];
if (accessGroup != nil)
{
#if TARGET_IPHONE_SIMULATOR
// Ignore the access group if running on the iPhone simulator.
//
// Apps that are built for the simulator aren't signed, so there's no keychain access group
// for the simulator to check. This means that all apps can see all keychain items when run
// on the simulator.
//
// If a SecItem contains an access group attribute, SecItemAdd and SecItemUpdate on the
// simulator will return -25243 (errSecNoAccessForItem).
#else
[dictForQuery setObject:accessGroup forKey:(id)kSecAttrAccessGroup];
#endif
}
[dictForQuery setValue:(id)kCFBooleanTrue forKey:(id)kSecMatchCaseInsensitive];
[dictForQuery setValue:(id)kSecMatchLimitOne forKey:(id)kSecMatchLimit];
[dictForQuery setValue:(id)kCFBooleanTrue forKey:(id)kSecReturnData];
OSStatus queryErr = noErr;
NSData *udidValue = nil;
NSString *udid = nil;
queryErr = SecItemCopyMatching((CFDictionaryRef)dictForQuery, (CFTypeRef*)&udidValue);
NSMutableDictionary *dict = nil;
[dictForQuery setValue:(id)kCFBooleanTrue forKey:(id)kSecReturnAttributes];
queryErr = SecItemCopyMatching((CFDictionaryRef)dictForQuery, (CFTypeRef*)&dict);
if (queryErr == errSecItemNotFound) {
NSLog(@"KeyChain Item: %@ not found!!!", [NSString stringWithUTF8String:kKeychainUDIDItemIdentifier]);
}
else if (queryErr != errSecSuccess) {
NSLog(@"KeyChain Item query Error!!! Error code:%ld", queryErr);
}
if (queryErr == errSecSuccess) {
NSLog(@"KeyChain Item: %@", udidValue);
if (udidValue) {
udid = [NSString stringWithUTF8String:udidValue.bytes];
}
}
[dictForQuery release];
return udid;
}
上面代碼的流程也差不多一樣,首先創建一個Dictionary,其中設置一下查找條件,然後通過SecItemCopyMatching方法獲取到我們之前保存到KeyChain中的數據。
4. 安裝gcc以後,編譯顯示ld
安裝程序之後編譯顯示這樣的字元,表示的就是使用的過程當中編譯錯誤導致這種低情況的設備運行。
這個時候我們應該改變一下它的安裝後的系統設置。
5. linux下怎麼用c獲取硬碟物理序列號
1、在Linux系統中通過C語言獲取硬碟序列號,可以藉助於ioctl()函數,該函數原型如下:
intioctl(intfd,unsignedlongrequest,...);
ioctl的第一個參數是文件標識符,用open()函數打開設備時獲取。
ioctl第二個參數為用於獲得指定文件描述符的標志號,獲取硬碟序列號,一般指明為HDIO_GET_IDENTITY。
ioctl的第三個參數為一些輔助參數,要獲取硬碟序列號,需要藉助於structhd_driveid結構體來保存硬碟信息,該結構體在Linux/hdreg.h中,structhd_driveid的聲明如下
structhd_driveid{
unsignedshortconfig;/lotsofobsoletebitflags*/
unsignedshortcyls;/*Obsolete,"physical"cyls*/
unsignedshortreserved2;/*reserved(word2)*/
unsignedshortheads;/*Obsolete,"physical"heads*/
unsignedshorttrack_bytes;/*unformattedbytespertrack*/
unsignedshortsector_bytes;/*unformattedbytespersector*/
unsignedshortsectors;/*Obsolete,"physical"sectorspertrack*/
unsignedshortvendor0;/*vendorunique*/
unsignedshortvendor1;/*vendorunique*/
unsignedshortvendor2;/*Retiredvendorunique*/
unsignedcharserial_no[20];/*0=not_specified*/
unsignedshortbuf_type;/*Retired*/
unsignedshortbuf_size;/*Retired,512byteincrements
*0=not_specified
*/
……
};
2、源代碼如下
#include<stdio.h>
//ioctl()的聲明頭文件
#include<sys/ioctl.h>
//硬碟參數頭文件,hd_driveid結構聲明頭文件
#include<linux/hdreg.h>
//文件控制頭文件
#include<sys/fcntl.h>
intmain()
{
//用於保存系統返回的硬碟數據信息
structhd_driveidid;
//這里以第一塊硬碟為例,用戶可自行修改
//用open函數打開獲取文件標識符,類似於windows下的句柄
intfd=open("/dev/sda",O_RDONLY|O_NONBLOCK);
//失敗返回
if(fd<0){
perror("/dev/sda");
return1;}
//調用ioctl()
if(!ioctl(fd,HDIO_GET_IDENTITY,&id))
{
printf("SerialNumber=%s ",id.serial_no);
}
return0;
}
編譯完成後,執行效果如下:
6. 申請id地址的代碼是多少,什麼叫代碼
是程序員用開發工具所支持的語言寫出來的源文件,是一組由字元、符號或信號碼元以離散形式表示信息的明確的規則體系。
代碼設計的原則包括唯一確定性、標准化和通用性、可擴充性與穩定性、便於識別與記憶、力求短小與格式統一以及容易修改等。
源代碼是代碼的分支,某種意義上來說,源代碼相當於代碼。
現代程序語言中,源代碼可以書籍或磁帶形式出現,但最為常用格式是文本文件,這種典型格式的目的是為了編譯出計算機程序。計算機源代碼最終目的是將人類可讀文本翻譯成為計算機可執行的二進制指令,這種過程叫編譯,它由通過編譯器完成。
7. ios用戶唯一標識 現在有沒有什麼好的方法獲得iOS設備的唯一標示
1.已禁用-[UIDevice uniqueIdentifier]
蘋果總是把用戶的隱私看的很重要。-[UIDevice uniqueIdentifier]在iOS5實際在iOS5的時候已經被遺棄了,但是iOS7中已經完全的禁用了它。Xcode5甚至不會允許你編譯包含了指引到-[UIDevice uniqueIdentifier]的app。此外,iOS7之前的使用了-[UIDevice uniqueIdentifier] 的app如果在iOS7上運行,它不會返回設備的UUID,而是會返回一串字元串,以FFFFFFFF開頭,跟著-[UIDevice identifierForVendor]的十六進制值。
3.MAC地址不能再用來設別設備
還有一個生成iOS設備唯一標示符的方法是使用iOS設備的Media Access Control(MAC)地址。一個MAC地址是一個唯一的號碼,它是物理網路層級方面分配給網路適配器的。這個地址蘋果還有其他的名字,比如說是硬體地址(Hardware Address)或是Wifi地址,都是指同樣的東西。
有很多工程和框架都使用這個方法來生成唯一的設備ID。比如說ODIN。然而,蘋果並不希望有人通過MAC地址來分辨用戶,所以如果你在iOS7系統上查詢MAC地址,它現在只會返回02:00:00:00:00:00。
現在蘋果明確的表明你應該使用-[UIDevice identifierForVendor]或是-[ASIdentifierManager advertisingIdentifier]來作為你框架和應用的唯一標示符。坦白的來說,應對這些變化也不是那麼的難,見以下代碼片段:
NSString *identifierForVendor = [[UIDevice currentDevice].identifierForVendor UUIDString];
NSString *identifierForAdvertising = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];
每種方法都適配一種特別的用法:
identifierForVendor對供應商來說是唯一的一個值,也就是說,由同一個公司發行的的app在相同的設備上運行的時候都會有這個相同的標識符。然而,如果用戶刪除了這個供應商的app然後再重新安裝的話,這個標識符就會不一致。
advertisingIdentifier會返回給在這個設備上所有軟體供應商相同的 一個值,所以只能在廣告的時候使用。這個值會因為很多情況而有所變化,比如說用戶初始化設備的時候便會改變。
8. MFC怎麼獲取自定義控制項的ID號
VC++MFC中,通過控制項對象或控制項指針獲取本控制項ID可以使用GetDlgCtrlID函數,示例如下:
CEdit* pEdit = (CEdit *)GetDlgItem(IDC_EDIT1);//獲取控制項指針
int nID = pEdit->GetDlgCtrlID();//獲取該控制項的ID這是通過代碼獲取控制項ID的方法,需要注意的是,這樣獲取的是一個「數字」ID,而不是在程序代碼中使用的宏ID(如IDC_EDIT1)的名字,這個控制項的宏ID名在編譯之後是無法獲取的。
IDC_EDIT1
這樣的控制項ID,實際是定義在resource.h中的一個宏定義,用於方便代碼和對話框資源的管理,實際上,控制項的ID就是一個數字,你可以在該.h頭文件中看到具體的定義,也可以在資源編輯器中,點擊控制項,查看它的「宏」ID。
9. fir.im 怎麼獲取uuid
次很偶然的機會知道FIR.im,這家公司主要的產品就是幫助開發者方便便捷地發布iOS或者Android應用的。今天我就聊聊如何在FIR.im中發布自己的APP,然後讓加入UUID的設備通過網頁直接下載安裝。這樣做的好處就是不用傻呵呵的每次插入USB,通過XCode去生成APP啦。畢竟有時候帶根線是挺麻煩的事情,最關鍵的是團隊成員一多,你總不能把設備一個個拿過來去更新,多麼笨拙的事情啊。所以我覺得FIR.im這事幹得漂亮,下面就讓我們看看如何發布一個APP的過程吧。
第一步:登錄蘋果開發者網站,添加想要安裝測試應用的設備UDID,只有加入UDID的設備才可以通過瀏覽器去下載APP。FIR.im 提供了一個快速獲取UDID的方法,點擊鏈接訪問(需通過手機訪問)。將獲得的UDID添加到下圖所示的iOS Devices裡面。
第二步:製作一個發布證書,證書的發布是在Provisioning Profiles,下圖已經將詳細的發布證書步驟演示了一遍。
在添加頁面選擇Ad Hoc
進入選擇App ID頁面:
選擇開發者
添加測試設備
最後就會跳轉到信息頁面,給這個證書之後就可以點擊生成,下載就可以了。
下面我們就進入XCode對剛才生成的證書進行配置
在 Xcode 中點擊Project圖標,在Info這個tab下找到configuration設置,裡面默認的是Debug和Release。點擊+,選擇Duplicate the 「Release configuration」,給生成的新東西起個名字,推薦使用ad hoc distribution
點擊Targets圖標,在Build Settings這個Tab下,找到Code Signing部分。將Code Signing Identity中的ad hoc distribution證書設置為剛剛導入到 Xcode 中對應測試應用的證書。注意不要改動Debug和Release中的證書。
保證Target中Info這個tab下的Bundle Indentifier裡面有預設值,其必須和Provision Portal輸入匹配。這個很重要,否則將來會出錯。
在Xcode左上角Run按鈕右側有一個下拉菜單,選擇Device或者Simulator,點擊菜單下方的Edit Schema。保證Archive中Build Configuration中的值是ad hoc distribution
至此配置以Ad Hoc Develoyment方式發布APP的工作就結束啦,下面就是進行程序編譯,點擊Proct中的Archive,編譯完成後彈出設置框,點擊Export選擇Save for Ad Hoc Develoyment就會生成一個.ipa文件,這個文件就是用於發布FIR.im所用到的文件。
最後就是將這個生成的ipa文件上傳到FIR.im,點擊發布鏈接進入發布頁面,
走到這一步,就說明你大功告成啦,需要測試的手機設備通過瀏覽器訪問這個APP地址就可以安裝啦。而且FIR.im還對APP的狀態進行了設置,可以分為公開或者私密的狀態來限制下載。總之,通過FIR.im再也不用為了測試APP而使用XCode進行一個一個設備生成APP啦。
10. 讓自己編譯的軟體提供用戶登陸和注冊,怎麼弄
1、首先打開手機桌面的「設置」,如圖,進入之後通過滑動菜單,找到「icloud」選項。
2、此時會看到icloud的設置界面有很多選項,對於已經有帳號的朋友則直接在Apple ID和密碼中輸入即可登錄,而沒有Apple ID的朋友繼續往下看。
選擇界面最後的「免費獲取Apple ID」。
3、在彈出的生日日期設置窗口中選則好自己的生日,跳轉到下一步。
備註:日期可以不是真實的,但必須是要自己能記住的
4、這時會要求設置姓名,輸入自己的姓名即可,設置好之後點擊右上角的「下一步」。
5、這時候會要求設置作為帳號的郵箱地址,分別有兩個選項「使用您當前的電子郵件地址」和「獲取免費的icloud電子郵件地址」。
選擇前者則你可以使用自己已經有點郵箱作為Apple ID的帳號,如QQ、126、163、新浪等,而選擇後者的話將自動為你申請一個icloud的郵箱地址,建議選擇前者,畢竟郵箱多了要一個個記住也是一件麻煩的事。
設置好之後到達下一步。
在這里以「使用您當前的電子郵件地址」為例子,輸入自己的任意一個郵箱帳號即可。點擊下一步。
在新的界面中會要求你輸入Apple ID的密碼,想好自己要設置的密碼,分別輸入後再確認輸入一次即可。
備註:Apple ID的密碼要求至少8位字元且包含大小寫字母。
然後會進入問題設置界面,按照提示選擇三個問題,並輸入答案即可。
備註:密保問題的作用是當你忘記Apple ID的時候可以用於找回密碼,因此必須要記住三個密保問題的答案。
當設置好三個密保問題之後會要求輸入一個救援電子郵箱,其作用也和上面的三個密保問題一樣,用於防治忘記Apple ID的密碼,因此需要記住自己輸入的救援電子郵箱。
備註:救援電子郵箱必須是有效可用的。
此界面無什麼作用,直接默認後點擊下一步即可。
此時會彈出Apple的協議和條款的確認窗口,也沒多大用處,直接點擊右下角「同意」即可,如圖所示。
到這步時就差不多完成了,界面會顯示正在創建Apple ID賬戶
完成創建之後會回到icloud的驗證界面,此步驟的作用就是驗證剛才用於Apple ID帳號的郵箱地址是否正確,如圖所示。
這時候直接在手機或者電腦瀏覽器上登錄第5步中輸入的郵箱,會受到一封蘋果發來的確認郵件,按照裡面的提示,驗證之後就可以。這時再打開手機就會發現帳號已經被激活,可以使用了。
最後,在下載app或者其他設置的時候直接按照提示輸入密碼或同一選項即可。