2015年4月23日 星期四

iOS: TestFlight Beta Testing

since: 2015/04/23
update: 2015/04/23
reference:
1. TestFlight Beta Testing - App Store - Apple Developer
2. [Xcode] 在 iTunes Connect 使用 TestFlight 測試

A. 登入 iTunes Connect, 新增 iOS App
     1. 登入 iTunes Connect, 點選 "我的 App"

     2. 點選右上方的 "+", 以增加 "新的 iOS App"

     3. 填入此 App 的相關資料後, 按下 "建立"
         - 名稱: 顯示在 App Store 上的名稱.
         - 版本: 與 Xcode 上此 App 專案設定的版本一致.
         - 主要語言: 繁中
         - SKU: 識別用名稱, 不會顯示在 App Store 上
         - 套裝組 ID: App 的 bundle ID (不可更改, 與 Xcode 上一致.)

-----------------------------------------------------------------------------------------------

B. App 相關圖檔的製作:
    以下二種方式之一:
    1. 利用網路提供的服務產生:
        App Icon Generator for IOS and Android

    2. Mac App Store - Asset Catalog Creator (個人採用的方式)
        a. 打開 app 後, 將一張圖片拖拉到 "drop an image here" 裡,
            > 選擇圖檔輸出目錄(ex: /Users/Lanli/Desktop)
            > 點選 "iOS Icon"
            > 點選 "Create Asset Catalog"

       b.接著, 點選 "iOS Iaunch",
           > 選擇圖檔呈現方式
           > 點選 "Create Asset Catalog"

       c. 結果:
           在桌面產生 Media.xcassets 資料夾, 裡面含有:
           AppIcon.appiconsetLaunchImage.launchimage 圖檔資料夾

       d. 開啟 XcodeMedia.xcassets 資料夾拖拉到專案上:
           > 並點選專案, 檢查右方的圖檔設定是否已設定好了(點選紅框處箭頭)
-----------------------------------------------------------------------------------------------

C. 將 App 打包歸檔
     1. 確認目前 App 可正常編譯:
         Xcode > Product > Build

     2. 編輯 Scheme:
          Xcode > Product > Scheme > Edit Scheme...

     3. 點選左方的 "Archive", 將其 Build Configuration 設為: "Release", 按下 "Close"

     4. 確認 iPhone 沒有連結 Mac, 編譯目標為: 專案名稱 > iOS Device ,
         接著開始將 App 打包歸檔: Product > Archive

-----------------------------------------------------------------------------------------------

D. 驗證 App
     1. 按下 "Validate"

     2. 選擇開發團隊 > Choose

     3. 按下 "Validate"

     4.  "允許" privateKey 進行簽署(需要二次)

     5. "Done"

-----------------------------------------------------------------------------------------------

E. 將 App 提交到 App Store
    1. 點選 "Submit to App Store" > 選取開發團隊 > "Choose"

    2. "Submit"

    3. "允許" privateKey 進行簽署(需要二次)

    4. "Done"

  -----------------------------------------------------------------------------------------------

F. 邀請使用者參與預先發行App的測試
    1. iTunes Connect > 我的 App > 選取 "準備提交" 的 App
        > 點選 "預先發行" > 啟用右方 "TestFlight Beta 版測試"


    2. iTunes Connect使用者和職能 > 新增使用者(按 "+" 號)


    3. 填好資料後, 按 "下一頁"

    4. "下一頁"

    5. 選取職能: 測試人員可以選擇 "技術", 按 "下一頁" > "儲存"

    6. 完成

-----------------------------------------------------------------------------------------------

G. 測試 App
    1. 測試者會收到一封確認信, 請點 activate your account, 並用 Apple ID 登入
         iTunes Connect 即完成帳號確認.

    2. 回到 iTunes Connect: 使用者和職能 > TestFlight Beta 版測試人員 > 內部 >
        選取測試人員後, 按下 "儲存"


    3. iTunes Connect > 我的 App > 準備提交的 App > 預先發行 > 內部測試人員
        > 選取測試人員後, 按下 "邀請"

    4. 請測試人員iPhone 上收信, 並點取 "Open in TestFlight",
        會安裝 TestFlight App(需要 iOS 8 以上) , 並可下載測試的 App.


    4. 進入 TestFlight, 便可以看到目前參與測試App   

多台 Mac 共用一張 Xcode 開發憑證

since: 2015/04/22
update: 2015/04/23

相關參考:
1. I touchs: Join iOS Developer Program
2. I touchs: 產生可於實體 iDevice 上運行的 App 之 (一) 取得憑證
3. I touchs: 產生可於實體 iDevice 上運行的 App 之 (二) 註冊設備
4. I touchs: 產生可於實體 iDevice 上運行的 App 之 (三) 新增 App ID
5. I touchs: 產生可於實體 iDevice 上運行的 App 之 (四) 新增 Provisioning Profile

6. I touchs: 從 Xcode 產生給測試人員使用的 .ipa 檔案
7. I touchs: Lala's Program Note 實作記錄: 34. App 上架

A. 輸出 iPhone 開發憑證
     1. 在安裝好憑證的那台 Mac 上, 打開啟 "鑰匙圈存取" 應用程式:
         類別 > 憑證 > 點選 "iPhone Developer ..."  憑證 >
         右鍵 > 輸出 "iPhone Developer ..."  憑證

    2. 輸入儲存名稱, 選擇儲存位置 > 儲存

     3. 輸入二次相同的存取此憑證之密碼.

     4. 在輸入一次 Mac 登入密碼即完成憑證的輸出.

-----------------------------------------------------------------------------------

B. 在另一台 Mac 上輸入憑證

    1. 打開啟 "鑰匙圈存取" 應用程式 > 檔案 > 輸入項目...


    2. 選取剛剛輸出的憑證檔, 確認目標鑰匙圈為: 登入 > "打開"

    3. 輸入存取此憑證之密碼 > "好"

    4. 確認憑證:
        憑證 > "iPhone Developer ..."  憑證

-----------------------------------------------------------------------------------

C. 到 Apple 開發網站下載裝置憑證
     1.登入: Apple Developer

     2. 點選 "Certificates, Identifiers & Profiles":

     3. 點選 "Provisioning Profiles":

     4. Development > 下載並安裝 "裝置憑證" 檔案

2015年4月18日 星期六

Processing: Send Data To Arduino

since: 2015/04/18
update: 2015/04/18
reference:
1. Connecting Arduino to Processing

A. 說明:

     在 Arduino 上, 設定當 9600 port 收到字元 'A' 時, 送出字元 'L',
     而收到字元 'B' 時, 送出字元 'H'. 底下為 Mac 上 Processing 的處理方式.

-----------------------------------------------------------------------------------------------

B. 實作:
     1. 開啟 Processing, 新增 Sketch 專案: arduino_hello2

     2. 在 arduino_hello2 Sketch 專案編輯區, 寫入以下程式碼:
import processing.serial.*;
Serial port;
int lf = 10;      // ASCII linefeed
char inChar;
boolean writeA = true;

void setup() {
  //println(Serial.list());
  size(400,200);
 
  String arduinoPort = Serial.list()[2];
  port = new Serial(this, arduinoPort, 9600);
  port.bufferUntil(lf);
  writeChar(writeA);
}

void draw() {
  if(port.available()>0) {
    // A ~ Z: http://www.asciitable.com/ 
    if(inChar >= 65 && inChar <= 90) {
      println("===> get char:\'"+inChar+"\' from port \n");
    }
  }
}

void serialEvent(Serial p) {
  inChar = p.readChar();
  writeA = !writeA;
  writeChar(writeA);
}

void writeChar(boolean writeA) {
  if(writeA)
  {
    port.write('A');
    println("write char:\'A\' to port ....");
    writeA = false;
  }
  else {
    port.write('B');
    println("write char:\'B\' to port ....");
    writeA = true;
  }
}


-----------------------------------------------------------------------------------------------

C. 執行結果:


Processing: Read Serial Data From Arduino

since: 2015/04/18
update: 2015/04/18
reference:
1. Connecting Arduino to Processing

A. 說明:
     目前剛開始接觸 Arduino, 藉由工作夥伴在 Arduino 上作了簡易的功能,
     先測試在 Processing 上的溝通方式.

-----------------------------------------------------------------------------------------------

B. 實作:

    1. 將 Arduino USB 連結線, 連到 Mac 上.  

    2. 開啟 Processing, 新增 Sketch 專案: arduino_hello

    3. 在 arduino_hello Sketch 專案編輯區, 寫入以下程式碼:
import processing.serial.*;
Serial port;
float val;

void setup() {
  size(440, 220);
  //println(Serial.list());
  String arduinoPort = Serial.list()[2]; // 見說明
  port = new Serial(this, arduinoPort, 9600); // 9600 須先在
Arduino 上定義好  
}

void draw() {
  if(port.available()>0) {
    val = port.read();
  }
  println("val = " + val);
}


說明: 如果先執行註解的那行: println(Serial.list());  可以看到類似以下的輸出:
        其中: 第 2 與第 5 行(從第 0 行開始計算), 紅色線條匡起來的, 就是 Arduino
                  連到 Mac 上的 Serial Port. (二者皆可使用)  

-----------------------------------------------------------------------------------------------

C. 執行結果:


2015年4月13日 星期一

openFrameworks: Setup Guide for OSX

since: 2015/04/13
update: 2015/09/03
reference:
1. openFrameworks

A. Integrated Development Environment (IDE)
    1. 從 OSX App Store 安裝 Xcode

    2. 安裝 Xcode's command line tools
        開啟終端機, 輸入以下內容後按 "Enter"
        $ xcode-select --install

-----------------------------------------------------------------------------------------------

B. openFrameworks for Xcode
     1. 下載 openFrameworks for Xcode (v0.8.4), 並解壓縮到特定目錄下,
         解壓縮出來的資料夾即是你的 openFrameworks 根資料夾(OF_ROOT).
         如下所示, OF_ROOT 為: of_v0.8.4_osx_release

     2. 在 openFrameworks 的根資料夾內, 有幾個關鍵性的子資料夾:
         - apps: 放置你自己新增的 apps
         - examples: 一系列展示的 apps, 包含影像, 3D圖形, 聲音, 字型等等.
         - addons: 用來存放 openFrameworks addons (由社群所貢獻的核心擴展)
         - projectGenerator_osx: 包含了專案產生器, 幫助你建立新的 apps.

-----------------------------------------------------------------------------------------------

C. 測試
     1. 用 Xcode 開啟:
         .... /examples/3d/3DPrimitivesExample/3DPrimitivesExample.xcodeproj
    備註: openFrameworks app 的基本架構:
             - src: 放原始程式的地方.
             - bin: 放可執行的 app, 以及 data 資料夾(素材) 

     2. 編譯執行:

     3. 結果:

-----------------------------------------------------------------------------------------------

D. 建立新的專案:

     1. 執行:
         .... /of_v0.8.4_osx_release/projectGenerator_osx/projectGenerator.app

     2. 在 Name 處點二下滑鼠, 更改名稱: firstSketch,  按下 "GENERATE PROJECT",
         然後關閉此 project generator.

     3. 開啟:
         .... /of_v0.8.4_osx_release/apps/myApps/firstSketch/firstSketch.xcodeproj

     4. 展開 src 資料夾, 點選 ofApp.cpp 檔案, 修改如下:
#include "ofApp.h"

//--------------------------------------------------------------
void ofApp::setup(){
}

//--------------------------------------------------------------
void ofApp::update(){
}

//--------------------------------------------------------------
void ofApp::draw(){
    //@add

    ofDrawBitmapStringHighlight("Everything works!", 20, 20);
}
....


     5. 編譯並執行:

-----------------------------------------------------------------------------------------------

E. 新增檔案到專案裡
    1. 專案 > src > New File...

    2. OSX > C++ File > Next

   3. Name: "myNewClass"
       勾選: Also create a header file
       > Next

   4. Group: src
       Target: 勾選 專案名稱
       > Create

    5. 結果:

-----------------------------------------------------------------------------------------------

F. 新增 openFrameworks addons
    如果 addon 有包含一個 README, 請依照說明, 不然的話請依照以下的方式:

    1. 將下載的 addon 放到 openFrameworks 根資料夾下的 addons 資料夾內.

    2. 在 Xcode 的專案裡, 點選 addons 資料夾 > "Add file to (專案名稱)..."

   3. 瀏覽到要加入的 addon 裡, 選取 srclibs 資料夾(如果有的話):
       點選: Create groups
       勾選: targets 專案
       非必要: Copy items if needed
       > Add

    4. 選取剛剛新增到專案的資料夾(libssrc),
        > New Group from Selection
 
    5. 重新命名後:

    6. 到目前為止, 可以試著去編譯你的專案, 如果出現找不到檔案的錯誤訊息,
        就需要幫 addon 的資料夾設定 header search path. 通常是位於 srclibs
        資料夾內叫作 "include" 的資料夾.

    路徑: $(OF_PATH)/addons/ofxOpenCv/libs/opencv/include
    說明: $(OF_PATH)代表 openFrameworks 的根資料夾.

    7. 專案Build Settings > 搜尋: header search
        > 找到 Header Search Paths

    8. 對 Header Search Paths 的值, 雙擊滑鼠後, 按 "+", 並新增一行:
        $(OF_PATH)/addons/ofxOpenCv/libs/opencv/include

    9. 再編譯一次, 應該就沒問題了~

-----------------------------------------------------------------------------------------------

F. 安裝 PiMapper:
     1. 開啟終端機, 到 openFrameworks 跟資料夾下的 addons 目錄下:
         $ cd /Lanli/RD/Projects/openFrameworks/of_v0.8.4_osx_release/addons/

     2. 下載並安裝 PiMapper:
          $ git clone https://github.com/kr15h/ofxPiMapper.git

     3. 下載並安裝 ofxIOofxOMXPlayer:
         $ git clone https://github.com/jvcleave/ofxOMXPlayer.git && git clone https://github.com/bakercp/ofxIO.git
   
     4. 編輯新加入的程式時, 請在 Xcode 中新增檔案, 或從別處拷貝程式碼內容再貼上;       
         不要從專案目錄夾直接將檔案覆蓋, 可能會造成編譯錯誤.