2013年2月28日 星期四

獲得 iOS 系統狀態事件

來自 http://www.tanhao.me/pieces/966.html | 老谭

老潭的部落格蠻有深度的,可以多看看

在OSX开发的程序中,我们经常需要知道系统的一些状态改变而对程序做出一定的处理,比如系统睡眠、唤醒、切换用户、屏幕关闭、显示屏保等等系统状态。

获取这些状态改变的需要两种方式,方式1:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self

 

selector:@selector(sleepMethod:)

 

name:NSWorkspaceWillSleepNotification

 

object:nil];

 

//其中能捕获到的状态有:

 

NSWorkspaceWillSleepNotification睡眠

 

NSWorkspaceDidWakeNotification从睡眠中唤醒

 

NSWorkspaceWillPowerOffNotification当用户注销或关机

 

NSWorkspaceSessionDidResignActiveNotification被切换到另一用户

 

NSWorkspaceSessionDidBecomeActiveNotification被切换回到当前用户

 

NSWorkspaceScreensDidSleepNotification屏幕睡眠

 

NSWorkspaceScreensDidWakeNotification屏幕唤醒

对于某一些系统状态(如屏保出现)就需要以下的NSDistributedNotificationCenter(跨进程的通知)来实现了:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

[[NSDistributedNotificationCenter defaultCenter] addObserver:self

 

selector:@selector(screensaverStart:)

 

name:@"com.apple.screensaver.didstart"

 

object:nil];

 

//其中的通知名称可以是:

 

com.apple.screensaver.didstart屏保开始

 

com.apple.screensaver.willstop屏保将要结束

 

com.apple.screensaver.didstop屏保结束

 

com.apple.screenIsLocked屏幕锁住

 

com.apple.screenIsUnlocked屏幕解锁

本文固定链接: http://www.tanhao.me/pieces/966.html | 老谭

2013年2月26日 星期二

LLDB 測試指令

引自 http://blog.csdn.net/likendsl/article/details/7576549

有中文真是太好了(誤

更多指令 http://lldb.llvm.org/lldb-gdb.html

  1. 命令                        解释    
  2. break NUM               在指定的行上设置断点。    
  3. bt                      显示所有的调用栈帧。该命令可用来显示函数的调用顺序。    
  4. clear                   删除设置在特定源文件、特定行上的断点。其用法为:clear FILENAME:NUM。    
  5. continue                继续执行正在调试的程序。该命令用在程序由于处理信号或断点而导致停止运行时。    
  6. display EXPR            每次程序停止后显示表达式的值。表达式由程序定义的变量组成。    
  7. file FILE               装载指定的可执行文件进行调试。    
  8. help NAME               显示指定命令的帮助信息。    
  9. info break              显示当前断点清单,包括到达断点处的次数等。    
  10. info files              显示被调试文件的详细信息。    
  11. info func               显示所有的函数名称。    
  12. info local              显示当函数中的局部变量信息。    
  13. info prog               显示被调试程序的执行状态。    
  14. info var                显示所有的全局和静态变量名称。    
  15. kill                    终止正被调试的程序。    
  16. list                    显示源代码段。    
  17. make                    在不退出 gdb 的情况下运行 make 工具。    
  18. next                    在不单步执行进入其他函数的情况下,向前执行一行源代码。    
  19. print EXPR              显示表达式 EXPR 的值。     
  20. print-object            打印一个对象    
  21. print (int) name      打印一个类型    
  22. print-object [artist description]   调用一个函数    
  23. set artist = @"test"    设置变量值    
  24. whatis                  查看变理的数据类型   

2013年2月23日 星期六

iOS app 詳細資訊

來自 PTT MacDev 版,popcorny 的資訊

作者: popcorny (畢業了..@@") 看板: MacDev

標題: Re: [問題] 問一個app頁面很冷門的問題

時間: Thu Feb 21 17:20:57 2013

※ 引述《liyata (liyata)》之銘言:

: 各位板友好,有一個蠻冷門的問題想請教

: 是這樣的,請大家先看這個頁面,這是Angry Birds的資訊頁面

: https://itunes.apple.com/us/app/angry-birds/id343200656?mt=8

: 請注意左上方名字的部份

: Angry Birds

: By Rovio Entertainment Ltd

這個是Artist name..

在itunes connect產生新的app的時候會提示你填

填了就不能改了..

: Open iTunes to buy and download apps.

: 中間那行,By Rovio Entertainment Ltd

: 這是Angry Birds的發行公司

這個是Seller Name

綁的是你的開發者帳號(ios developer program)

這個應該是你申請IDP之後就不能改了

: 我想問的是,這個部份是抓取哪裡的資料而來的呢?

: 是Apple ID上的哪個資訊?

: 是申請時就要填寫,日後無法更改嗎?若可以改,要從何改..

: 還是這是app打包時填在plist中呢?不曉得有沒有人知道的..

有關app資訊可以用這個查

http://itunes.apple.com/lookup?id=343200656

2013年2月18日 星期一

在地圖上預設顯示最近地點

寫地圖程式 30 分鐘

找出最近店家 1 小時

合適地切換店家 1 小時

搞定有開定位和沒開定位的切換店家搞了快 3 小時 orz

之前沒有碰到使用 ios 卻不喜歡開定位服務的情況

所以一直沒想過這問題

大致流程如下

進入時,先判斷是否有開啟定位 locationManager ==nil

沒開的話,單純取得店家資料,顯示全台灣地圖

有開的話,取得目前位置後,才去取得店家資料並判斷最近店家

這邊有個問題,如果使用者臨時決定開啟定位該怎麼辦?

採用的處理法是在 startUPdateLocation 中進行處理

如果之前沒有最近店家,則在取得新位置後重新移動(不過這處理是否好壞就要看 PM 決定了)

IOS 系統分布率

http://david-smith.org/iosversionstats/

2013年2月19日 5.x 佔了 24.7%.. 還不到說服老闆放棄支援 ios 5 的時間點 orz

2013年2月14日 星期四

建立 iOS app 企業佈署步驟

http://www.maas360.com/maasters/forums/mobile-app-management-mam/show/332/building-ios-apps-for-enterprise-deployment

Building iOS Apps for Enterprise Deployment

4 October 2011 (Last edited: 14 June 2012)

Overview

This document describes the steps needed to build an iOS app for Enterprise deployment. Unlike ad-hoc builds, these builds can be installed on any iOS device owned by the enterprise. Ad-hoc builds are usually created for testing an app on a pre-defined set of test devices. When the app is ready for production deployment, an enterprise (in-house) build is created.

Note: You must have the Team Agent role in the iOS Provisioning Portal to create the artifacts needed for this build.

The process for building an Enterprise app is:

1. Create the Distribution Certificate.

2. Create an Enterprise Provisioning Profile. (Go to developer.apple.com and click Member Center.)

3. Build the app using the Enterprise Provisioning Profile.

Following sections explain these steps in further detail.

Create a Distribution Certificate

Distribution certificates are used to sign Enterprise apps. The steps to receive a Distribution Certificate are:

1. Login to the iOS Provisioning Portal with the Agent role.

2. In the Certificates section, go to Distribution tab.

3. Use the Certificate Assistant (available in the Keychain Access application on Mac OS X) to generate a Certificate Signing Request (CSR).

4. Upload the CSR to the iOS Provisioning Portal and download the distribution certificate.

5. Save the certificate on the disk, and open this using Key Chain Access.

6. Xcode can now use this certificate to sign iOS apps.

7. To export this certificate to a different (build) machine, exported it in .p12 format:

a. In Key Chain Access, go to the My Certificates section

b. Right-click on the downloaded certificate and click "Export..."

c. Save the certificate in .p12 format, and provide a secure password while saving.

Create an Enterprise Provisioning Profile

The steps to create an Enterprise Provisioning Profile are:

1. Log in to the iOS Provisioning Portal with the Team Agent role.

2. In the Provisioning section, go to the Distribution tab.

3. Click on New Profile. On the Create iOS Provisioning Profile page

a. Select the Distribution Method as In House

b. Select an appropriate distribution certificate

c. Select App ID

4. Download the provisioning profile.

5. This provisioning profile can be used to build the app for in-house deployment.

Building an App Using an Enterprise Provisioning Profile

The steps to build an app on a machine are:

1. Install the Distribution certificate (.p12 file)

2. Open Xcode. Go to the Organizer window

3. Import the Enterprise Provisioning Profile

4. Open the app’s project file in Xcode

5. Go to Build Settings, Code Signing section

6. Select the certification contained in the Enterprise Provisioning Profile

7. Build the project using Build For > Build for Archiving. This will create the app archive in .ipa file format

8. The .ipa file is ready for enterprise deployment

push 推播開發

Error Domain=NSCocoaErrorDomain Code=3000 "找不到應用程式的有效“aps-environment”授權字串" UserInfo=0x4b8c40 {NSLocalizedDescription=找不到應用程式的有效“aps-environment}

這問題是由於 provisioning 未更新

在新增 push certificate 之後,請更新 provisioning

注意順序!要先為 App ID 產生推播憑證,再為 App ID 產生的 Provisioning Profile 才有效,若確定以上步驟順序都無誤,卻還是出現問題,則可能,你 [Code Signing] 忘記重新設定 Provisioning Profile:

(來自 http://cutesung2.blogspot.tw/2012/04/3-push-notifications-aps-environment.html

Device Token:

這是在 mobileProvisioning 配置成功後,在 app 上執行時才會產生的資訊

编写push notification之获取device token

PushMeBaby

https://github.com/stefanhafeneger/PushMeBaby

這是個方便的測試 push 程式(在MAC上)

不過所用的 certificate 名稱有限定

目前(2013年1月4日 下午3:05)為 apns.cer

需要複製檔案進去改名

名稱在 ApplicationDelegate.m 的

self.certificate = [[NSBundle mainBundle] pathForResource:@"apns" ofType:@"cer”

其他參考

http://blog.csdn.net/totogogo/article/details/7376214

http://blog.serverdensity.com/how-to-build-an-apple-push-notification-provider-server-tutorial/

NSString 找文字方法

其實重點是要搞懂 NSRange 是什麼

NSRange commonLocation =[b rangeOfString:@":"];

if (commonLocation.location != NSNotFound) {

//會員帳號

loginID = [b substringFromIndex:commonLocation.location];

isLogined=YES;

}

certificate, provisioning, 又是你們兩個搗蛋鬼..

CSR:產生 certificate 的檔案

產生 CSR 時,電腦已經先行產生了公用 key 和私密 key 在電腦了

CSR 中包含了公用 key, 可以送給 apple 產生 certificate, 因為private key 只有產生的電腦有

所以可以保證該 certificate 只有該電腦可以使用和簽署

app id 就是類似專案

provision file

Xcode 會有很大的 cache 空間

包括 refresh certificate, 甚至是 team

code sign error 但是確定 provisioning 和 certificate 正確時

可以使用 don’t code sign 清除 Xcode 對 provision 的記憶

只要是要切換帳號

先把 key

iOS 鍵盤處理事件

對需要切換輸入法的國家來說

處理鍵盤事件還蠻煩的..(Apple 怎麼不把這個一起搞定...)

以擁有兩個 TextField textA, TexField B textB 的 viewController 而言

在 ViewDidLoad 中註冊 UIKeyboardWillShowNotification、UIKeyboardWillHideNotification 通知後

[notification addObserver:self selector:@selector(keyboardWillShow:)

                                                 name: UIKeyboardWillShowNotification object:nil];

        [notification addObserver:self selector:@selector(keyboardWillHide:)

                                                 name: UIKeyboardWillHideNotification object:nil];

進入 text A 時,會觸發 textBigenEdit 事件

然後會觸發 UIKeyboardWillShowNotification(鍵盤顯示)

如果這時候切換鍵盤,會再次觸發 UIKeyboardWillShowNotification(鍵盤顯示)

每切換一次輸入法就會觸發一次 UIKeyboardWillShowNotification(鍵盤顯示)

在不離開 textA 的情況下直接進入 textB 的話

無論是使用程式移動或使用者移動,都不會觸發 UIKeyboardWillShowNotification(鍵盤顯示)

而無論在何種情況

關閉鍵盤就會觸發 UIKeyboardWillHideNotification(鍵盤隱藏)

所以,一個完整的解決辦法是

使用者進入、切換輸入法時,抓取鍵盤高度,進行調整

第一次進入時,抓取高度,調整元件到鍵盤上方

切換輸入法時,抓取高度,調整元件到鍵盤上方

如果元件的高度不大,可以考慮直接調整到鍵盤上方一定高度,避免切換鍵盤時移動

可是當輸入元件不只一個時,只有拉 view 的位置,很可能會因為元件間的位置不足而造成使用者混亂(UX 問題)

這邊有一個小問題

如何切換到下一個輸入欄位

使用鍵盤移動時,可以將元件放到輸入鍵盤正上方

要考慮的

元件彼此間的高度是否足夠?直接移動 view 的話,是否會造成視覺干擾?(輸入欄位 A 時,畫面上出現了欄位 A 和欄位 B,欄位 B 甚至可能讓人以為是目前正在輸入的欄位

因此在多欄位的情況,個人偏好的方法是將對應的欄位直接放到鍵盤正上方

需要的方法會是

開啟鍵盤時,移動元件或基底 view,使元件顯示到正上方

切換元件或切換輸入法時,檢查位置,移動到正上方

關閉鍵盤(離開元件時使用 resignFirstResponder)回復元件或基底 view 到原值

作法

註冊鍵盤監聽事件、beginEdit 事件

目前元件屬性

和一個接受移動或離開參數的移動方法

-(void)keyboardWillShow{

        //移動 view

}

-(void)keyboardWillHide{

        //回復 view

}

-(void)textWillEdit{

        //檢查鍵盤是否顯示,未顯示則不作動作

        //以顯示則移動 view

}

-(void)mokeView:(BOOL)toShow{

        

        //檢查鍵盤大小和元件位置,可以考慮檢查位置是否符合而是否執行移動

        //移動 view

        

}

iOS 憑證、金鑰管理與備份

了解了 private key, public key, .CSR, .cer 檔案彼此的關係後

接下來就是怎麼管理的問題

先回顧一下

建立 CSR 時,會產生對應的 private key, public key

上傳 .CSR 產生 .cer 時,產生的 .cer 只有在存在對應的 private key 的電腦中才能用

首先,先記得一件事情

已經由 .cer 檔案有效簽署的 iOS app 在撤銷對應的 .cer 時,是不會受到影響的

而推播所用的 ssl certificate 是獨立的(或者說,使用的是負責推播的伺服器上存在的 private/public key 以及對應的 .CSR)

因此,如果遺失了 private/public key 時,其實大可以重新產生、重新申請

對現有服務、App 並不會造成影響

唯一的影響只是開發人員要上傳新檔案時,必須使用新的 .cer

另一種比較常見的狀況

是需要輸出 certificate 給其他人員簽署 app (例如 phoneGap…)

這種情況,下載對應的 certificate (*.mobilevision)後,安裝到 Mac,然後打開 keychain access,找到對應的 certificate,選擇輸出(.p12),這時候會需要密碼(忘記的話,再輸出一次就好了..)

然後將 *.mobilevision 和 .p12 檔案給對方就好

.p12 檔案的結構和原理還不太熟

(以下部分「全部」尚未實作過,僅就手上資料描述)

如果要轉移/備份現有的 certificate, 首先要記得一起轉移對應的 keys

備份 keys 的方法,是匯出成 .cer

Mac 的 keychain 有提供匯出 keys 的功能(轉出的檔案是 .cer 檔案)

理論上應該可以把對應的 keys 轉移出去

如果遺失了 iOS app store 的 .cer 檔案,重新下載就好

如果遺失了 .CSR 檔案

可以開啟 keychain access, 點選對應的 private key 選擇從現有金鑰要求憑證(如下圖,不確定中文)

PastedGraphic-2013-02-14-19-24.png

如果遺失了 keys.. 找一下有沒有備份(time machine..)

沒有的話,應該是沒救了

重新產生就好

可以考慮用 certificates 需要更新的理由來虎爛 dever..

dever 聽到 certificates 這種非開發問題大概都會隨你處置… :p

2013年2月5日 星期二

無法刪除 iOS 模擬器上 app

這其實算是 Xcoe 問題

不過因為只有在寫 PhoneGap 時會發生 app 暫存問題,就放這邊了

Xcode 有可能會把 app 暫存住

因為我在 iOS 模擬器上刪除 app 會當掉..(權限問題?)

只能手動刪除 App

位置在

/<user>/Library/Application Suport/iPhone Simulator/<版本>

p12, mobileprovision 以及更換開發帳號的方法

使用 keychain 刪除憑證時

偶爾會一起刪除掉金鑰,造成 proviosning 無效需要重新處理(掯....

後來發現正確作法是打開 keychain,

進入鑰匙

然後選擇鑰匙下面的憑證一一刪除..

喵的一堆鑰匙就這樣失去效用..

然後 keychain 的 cache 很嚴重

做完更新後,要確認效果最好是關閉(cmd + Q)後重新開啟

為何要刪除憑證?

因為 Xcode 經常會錯亂..尤其在 certificate 使用相同名字(同一家公司的不同帳號)時

更新 certificate 後

development 的 provisioning 檔案可以重新產生

distribution provisioning profile 則只能砍掉重新建立

Code Sign 同名錯誤

Code Sign error: Certificate identity 'iPhone Distribution: xxxxxx’ appears more than once in the keychain. The codesign tool requires there only be one.

先到 keychain 裡面,挑選 key, 把不要用的 certificate 刪除(注意...)

然後選擇 don’t code sign 洗記憶,clean

再換回正常的 provisioning profile 就OK了

理論上是這樣啦..不過 keychain 和 Xcode 的 organiser 的記憶時間有點沒規則

可能需要多做幾次

什麼是 p12 檔案

.p12 檔案是憑證+金鑰匯出的結果檔案

在其他電腦上輸入密碼開啟並匯入後,該台電腦上就可以使用該憑證

以及以該憑證建立的 provisioning 檔案

這也是之前用來讓多組開發人員可以進行實機測試的主要方法:將金鑰輸出成 p12 後匯入其他電腦

可參考 http://itouchs.blogspot.tw/2011/08/idevice-app.html 的說明

4. 將 private key 轉成 .p12 檔, 寄給需要利用 Certificate 一同開發 App 的人.

若要使用此方法,建議為 dev 和 dis certificate 建立不同的 CSR (也就是會產生兩組不同的金鑰)

方便管理(開發組使用 dev p12 匯入開發證書即可)

開發推播時,常會使用同一台電腦

不過在正式環境,通常會使用不同電腦

因此有推播功能時,要申請 推播用的 SSL 檔案,可建立伺服器自己的 CSR 檔案,上傳到 apple 推播取得對應的 SSL 檔案後,轉送到推播伺服器

當然使用同一台電腦,取得SSL憑證後匯出成 p12 也不是不行

什麼是 mobielprovision

從網站下載的 mobielprovision

包含了 appID, certificate (dev/dis) 以及可應用機器(特定幾台或無限制)等設定的檔案

可用於簽署 app ID 相符的 app (所以 wildcard 可用於所有 app)

mobielprovision 檔案

多帳號下開發的建議配置

可能的話,使用 member center 使用一個帳號負責開發作業(各帳號邀請同一帳號A,帳號A擁有不同開發帳號下的 dev certificate cer_A,同時也可以申請使用了 cer_A 的 provisioning profile 作為開發測試用

或者只是使用 wildcard 其實也可以

需要佈署 distribution 時,下載對應帳號的 distribution certificate 以及 provisioning profile

佈署、上傳完畢後,就可以到 keychain 中刪除對應的 certificate 避免錯亂

iOS Team Provisioning Profile: Wildcard 應該是使用對應的輔助帳號,在 Xcode 下的 organiser refresh 時自動更新?

2013年2月4日 星期一

iOS 憑證申請總整理(二) member center

這邊說明 member center 功能

member center 提供讓 apple dev 帳號可多人開發的方法

由於一個帳號在 dev/dis 環境下只能有一個 certificate

在多人開發環境下會有很大問題

member center 的入口隨處可見..但是我以前從沒想要去點

PastedGraphic13-2013-02-5-13-53.png

進去後,可以選擇 people 管理人員

左邊的 All People、 iOS Developers 內容我看起來差不多…可能是邀請的成員不夠複雜

基本上分三 + 一級

Admin, Member, No Access 和不在名單

iOS Developers 中可以勾選大量成員移除 Access 權限

而 All people 和 iOS Developer 頁面都可以選擇成員的 detail 調整權限(Admin, Member or No Access)

PastedGraphic23-2013-02-5-13-53.png

成員怎麼來?邀請來的

開啟 Invitations 頁面,可以看到兩種邀請法(單一、大量),以及最近的邀請結果

PastedGraphic22-2013-02-5-13-53.png

邀請發出後,受邀的人員會收到邀請信

信中有連結,點下連結後會有確認網址

確認後就可以登入受邀的 Developer Program了

受邀的帳號若有多個 Developer Program 存取權限的話

使用受邀的帳號登入時,可能會有點混亂

因為需要不時確認目前所在的 Program

不過總算比之前要一直登出簡單了一點

PastedGraphic16-2013-02-5-13-53.png

上面這個畫面不時會出現,而且有點沒規律…

請各位程式設計師多多包容 Apple 對我們的不友善..

反正 Xcode 都用過來了…這點小小不便算什麼呢....

登入後,就可以申請新的 Certificate(記得 CSR 要給個好名字..)

在 Provisioning Portal 會看到以下畫面

上面是 Your Certificate,所以只會看到自己的

下面是成員的,左邊的 Signing Requests 是待驗證(by role: Admin)

右邊是 Active Certificates

PastedGraphic18-2013-02-5-13-53.png

另一個有變化的地方是 Provisioning 申請畫面可以挑 certifictes 了

PastedGraphic19-2013-02-5-13-53.png

iOS 憑證申請總整理(一)

注意:

CSR 檔案很重要,請妥善保存

如果有比較高級的安全性需求,建議每一個帳號作兩份 CSR,分別對應 dev/dis 環境的憑證申請

注意,CSR 檔案真的非常重要..

如果你覺得不重要,那你應該是已經搞懂了 private/public 和相關資料流程的人

不然就是完全不知道 CSR 檔案重要的原因..

CSR 檔的重要性在於可與對應的專用/公用密鑰對應

如果這三者有其中一份不見了..請考慮重新作一組..

目前為止,我不知道怎麼從鑰匙重新產生對應的 CSR 檔案

如果你知道,請告訴我

先從申請憑證講起(下圖)

申請憑證時,會產生對應的專用、公用 key 到鑰匙中

並以輸入的一般名稱儲存,名稱這個東西很重要,尤其當你是 soho 或有需要申請多組憑證時

名稱可以事後變更,不過何必多一道工呢

選擇儲存到硬碟是因為之後要上傳到 apple developer

PastedGraphic-2013-02-5-12-03.png

之後到 developer 或 distribution 要求 certificate

系統會要求提供 CSR

上傳成功後,稍等一下就會產生對應的 certificate

PastedGraphic7-2013-02-5-12-03.png

下載下來後(記得順便下載 WWDR)

會在 keychain 中發現對應的 certificate (憑證)

這邊會發現下載回來的 certificate 會有對應的 key,

所以 key 不能亂砍..

PastedGraphic8-2013-02-5-12-03.png

同時,在 Xcode 的 organiser 中也會看到對應的 ID

之後想移除 Teams 的帳號,到 keychain 移除對應的 certificate 就可以了,然後,千萬別動 key

由於 Xcode 的這方面機制很容易錯亂(我沒有說爛..果粉別噴我)

切換帳號或使用不同帳號的 provison 簽署(即使 dev..),我常出現問題

所以很習慣刪除 certificate 再切換帳號

頭像有綠色勾勾表示可以使用/沒有問題

PastedGraphic9-2013-02-5-12-03.png

DEVICE ID 沒啥可說的

可以在 Xcode organizer 中直接 add to portal 加入這邊,profile 顯示的是有使用該機器的 dev profile 數目

PS: 每個帳號一年只能新增 100 “次”新裝置,也就是說移除舊裝置不會影響到 100 這個數目

PastedGraphic1-2013-02-5-12-03.png

APP ID 申請畫面,這邊的 description 和 bundle identifier 之後都不能更改

記得要有識別性

PastedGraphic2-2013-02-5-12-03.png

下圖是 app id 列表

Wildcard 應該會自己產生,如果沒有的話,可以自己建立一個 bundle identifier 為 *, decryption 自訂的 app id

如果沒有這個,xcode organiser refresh 時會出現 wildcard 錯誤

PastedGraphic4-2013-02-5-12-03.png

App ID configure 內容

推播、iCloud 等設定都在這邊

PastedGraphic5-2013-02-5-12-03.png

啟用四項設定其中任一時

之前的 provision file 必須要重新產生,不然無法套用設定

另外,推播需要有 SSL 檔案用於加密訊息,與 certificate、provisioning 獨立(意思就是更新 certificate、provisioning 時不用重新產生)

Data protection 不太了解,請參看 http://blog.csdn.net/lifengzhong/article/details/7739477

PastedGraphic6-2013-02-5-12-03.png

建立 Provisioning 時,需要輸入 Profile name(之後可修改)

挑選 certificate (dev 環境的話)

certificate 理論上在 dev/dis 都只能有一組

不過因為可以在 member center 中邀請開發者,開發者可申請 certificate

因此可能會有多組 developer certificate

但是 distribution certificate 一定只能有一組,請妥善保管當初申請時的金鑰(使用 p12 輸出)

遺失的話,就只能重新建立 CSR 重新建立(不會對已簽署的 app 造成影響)

development provision profile 可以選擇 certificate, app ID 和 devices

app ID 是選擇對應的 ID,而且只會出現app id 的 description name, 沒有識別性的話就只能猜了..

Devices 是此 provisioning profile 可以安裝的裝置

裝置安裝了此 provioning 後,就可以執行 bundle id 為對應 app id 的 app 了

換個說法,建立名稱為xyz 的 provisioning profile,使用 app ID tw.com.abc, 選擇機器 2,3,4 後

一個 bundle identifier 為 tw.com.abc 的 app 就可以用xyz 簽署,並使用機器 2, 3,4 執行

此外的 app, 如 tw.com.gef 不可使用此 provisioning profile 簽署

此外的裝置,如裝置 1, 5, 6, 則無法用於執行使用 xyz 簽署的 app

PastedGraphic10-2013-02-5-12-03.png

distribution,這邊可以選擇兩種

app store: 上傳到 apple store 用,只可選 ID,不用選機器

ad hoc: 臨時,基本上是給 testflight 之類服務執行大範圍測試使用

除了 app ID 外,必須指定可用裝置

(這也是為何 testflight 需要先申請、安裝他們的憑證、上傳 udid 並新增到 devices 中之後才可使用)

PastedGraphic11-2013-02-5-12-03.png

distribution 頁面都是說明

pass type ID 頁面沒用過,所以就不說明了