1、開發(fā)者證書(分為開發(fā)和發(fā)布兩種翼抠,類型為ios Development,ios Distribution)少办,這個是最基礎的,不論是真機調(diào)試蟹演,還是上傳到appstore都是需要的风钻,是一個基證書,用來證明自己開發(fā)者身份的酒请;
2骡技、appID,這是每一個應用的獨立標識,在設置項中可以配置該應用的權(quán)限,比如是否用到了PassBook,GameCenter,以及更常見的push服務布朦,如果選中了push服務囤萤,那么就可以創(chuàng)建生成下面第3條所提到的推送證書,所以是趴,在所有和推送相關(guān)的配置中涛舍,首先要做的就是先開通支持推送服務的appID;
3、推送證書(分為開發(fā)和發(fā)布兩種唆途,類型分別為APNs Development ios,APNs Distribution ios),該證書在appID配置中創(chuàng)建生成做盅,和開發(fā)者證書一樣,安裝到開發(fā)電腦上窘哈;
4吹榴、ProvisioningProfiles,這個東西是很有蘋果特色的一個東西,我一般稱之為PP文件滚婉,該文件將appID,開發(fā)者證書图筹,硬件Device綁定到一塊兒,在開發(fā)者中心配置好后可以添加到Xcode上让腹,也可以直接在Xcode上連接開發(fā)者中心生成远剩,真機調(diào)試時需要在PP文件中添加真機的udid;是真機調(diào)試和必架必備之珍品骇窍;
平常我們的制作流程一般都是按以上序列進行瓜晤,先利用開發(fā)者帳號登陸開發(fā)者中心,創(chuàng)建開發(fā)者證書腹纳,appID,之后在PP文件中綁定所有的證書id,在appID中開通推送服務痢掠,在開通推送服務的選項下面創(chuàng)建推送證書(服務器端的推送證書見下文),添加調(diào)試真機等
- 5嘲恍、開發(fā) (開發(fā)證書, 配置文件, AppID) / 生產(chǎn)(生產(chǎn)證書, 配置文件)
1.了解:一個已付費的開發(fā)者賬號(賬號類型分為個人(Individual)足画、公司(Company)、企業(yè)(Enterprise)佃牛、高校(University)四種類型淹辞,每年資費分別為$99、$99俘侠、$299象缀、免費。)爷速。
2.注意:
你的Xcode必須是正式版的央星,beta版本的Xcode是不能上傳項目的。
選擇App Store and Ad Hoc: 往AppStore上傳App時使用的證書
3.注意:
一個開發(fā)者賬號只能創(chuàng)建(1-2個開發(fā)(測試)證書遍希,2-3個生產(chǎn)(發(fā)布)證書)等曼,如果你的App Store Ad Hoc 前面的按鈕不能選擇,則代表你的這個賬號無法再創(chuàng)建新的生產(chǎn)證書了。
4.解決方法:
對于證書的問題:從共同使用這個賬號的人電腦上生成.p12文件禁谦,導入自己的電腦胁黑。(盡量不要執(zhí)行下面第2步)
如果你想生成的話,把現(xiàn)有的刪除一個(建議刪除時間比較靠前的)州泊。注意:如果刪除一個證書丧蘸,那么正在使用這個證書的人將不能再使用了,除非重新生成遥皂,然后利用.p12重新導入自己的電腦里力喷!
對于版本低的問題:找到
/Users/用戶名/Library/Developer/Xcode/
下面的DeviceSupport
,或者通過/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
這個路徑找到演训,有的電腦不一樣弟孟,將里邊文件版本提高一下,然后重新啟動xcode就可以了
如果只是可以真機運行:使用的時候使用開發(fā)證書+配置文件
如果想正常真機運行并可以推送样悟,步驟如下:
一拂募、推送需要準備的(已經(jīng)有了):
1、開發(fā)證書( iosDevelopment)
將生產(chǎn)的開發(fā)證書添加在鑰匙串--->登錄---->我的證書
里邊, 如果里面有不用的證書,就清空,避免影響混亂
2窟她、推送證書 (APNsDevelopment) & 推送配置文件(profile) & AppID(設置推送服務的)
點擊"+"創(chuàng)建APPID
然后一直點選register按鈕,直到Done按鈕出現(xiàn),點擊后,就可在Identifiers-->AppIDs
里看到自己創(chuàng)建好的ID
第二個環(huán)節(jié):
勾選App Development,同一賬號下可以找到自己配置好的開發(fā)文件.[一個開發(fā)者賬號只能創(chuàng)建(1-2個開發(fā)(測試)證書)]
繼續(xù)下一步
上面選項里如果多的話,最好選擇時間最新的那個
里面的證書名同樣隨意寫.
全選是為了避免找到自己真機uDID的麻煩
這樣配置文件就將appID和開發(fā)者證書關(guān)聯(lián)了起來.
下載即可,進入第三環(huán)節(jié)
上面的按鈕是為了生成推送授權(quán)
同樣找到自己的APPID
通過鑰匙串訪問生成
將生成的文件添加進入
下載后將證書文件通過鑰匙串導出成p12格式為推送用
推送環(huán)節(jié)
應用名稱隨意
BundleID與推送的一致
注意:provisioning Profile那塊,我說的是推送證書的配置文件
注意:如果你想刪除證書陈症,執(zhí)行下面步驟,否則略過震糖。
build setting search code signing
bitcode -> NO
通過真機,在推送內(nèi)容框里輸入內(nèi)容,按操作就可推送到真機
二录肯、使用:(先在JPush平臺創(chuàng)建一個應用,然后用自己獲取Appkey替換工程里面的推送注冊的Appkey)
注意1:在JPush平臺創(chuàng)建應用的時候需要上傳“推送證書的p12格式”的證書
注意2:工程中的bundleID 設置為AppID 的bundle ID
注意3:工程中設置證書 CodeSigning Identity 為 開發(fā)證書吊说,Provisioning Profile的位置設置為推送配置文件
工程中參考的代碼(先用cocoapods導入框架)
#import "AppDelegate.h"
#import "MainListViewController.h"
#import <JPUSHService.h>
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//fd88a1dab1d265a352d25072
// 注冊APNS類型-----遠程推送
[JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert) categories:nil];
// 初始化d283459f115a0eb09f04f8fb ccc4667f37cd6b6818a70a54
[JPUSHService setupWithOption:nil appKey:@"a2afce5e9ac00479ed0f40ee" channel:nil apsForProduction:NO];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
MainListViewController *mainListVC = [[MainListViewController alloc] init];
UINavigationController *mainListNaviVC = [[UINavigationController alloc] initWithRootViewController:mainListVC];
self.window.rootViewController = mainListNaviVC;
return YES;
}
#pragma mark ----處理apns接收消息(JPush SDK required)----
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
// 向服務器上報Device Token
[JPUSHService registerDeviceToken:deviceToken];
}
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *) error {
NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error);
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
// 處理收到的APNS消息论咏,向服務器上報收到APNS消息
[JPUSHService handleRemoteNotification:userInfo];
NSLog(@"%@", userInfo);
}
對于無效的證書的解決方法:
問題解決
需要更新AppleWWDRCA證書。
1.https://developer.apple.com/certificationauthority/AppleWWDRCA.cer下載最新AppleWWDRCA證書疏叨,雙擊安裝潘靖。
2.打開鑰匙串,選擇登錄蚤蔓,然后選擇下面的證書。
3.選擇桌面左上角的顯示→顯示已過期的證書糊余。
4.這時候你會發(fā)現(xiàn)一個過期的“WWDR Certificate”(Apple Worldwide Developer Relations Certification Authority)秀又,刪除它。
特別注意:有的在系統(tǒng)那一欄也有這個過期的“WWDR Certificate”贬芥,也一并刪除它吐辙,沒有就不作處理。
5.再回頭點擊Develop證書和Distribution證書蘸劈,不出意外他們都變成“此證書有效”了昏苏。