2016年2月29日 星期一

【iOS/Facebook】Facebook SDK 在 iOS 上的設定及事前準備

現在很多應用程式都會加入 Facebook 的功能
而使用 Facebook 功能前
我們需要先下載 Facebook SDK 及在 iOS 上設定

(1) Facebook SDK 按這裡下載

     (版本選哪個也可以, 夜雪是用最新的 4.10 版本的)

(2) 在下載期間, 可以先到 App Dashboard 那邊建立申請 Facebook App 喔~

      詳情請參考 【Facebook App】申請建立 Facebook App 並取得 App ID

下載完成後的 Facebook SDK 內容如下圖:

下載 Facebook SDK 及申請建立 Facebook App 後, 可以打開 xcode project 了!

(3) 先把需要用到的 Framework 拖到 xcode project 裡(FBSDKCoreKit.framework是必要的)
     拖進 xcode 後, 在小視窗選擇 "copy items if needed" 和 "create groups", 然後按 "finish" 


(4) 右鍵 "Info.plist" -> "Open As" -> "Source Code", 拉到最底, 在 </dict> 上加入


<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>fb{your-app-id}</string>
    </array>
  </dict>
</array>
<key>FacebookAppID</key>
<string>{your-app-id}</string>
<key>FacebookDisplayName</key>
<string>{your-app-name}</string>

記得把你的 Facebook App ID 和 name 取代 "{your-app-id}" 和 "{your-app-name}"
Facebook App ID 可在 App Dashboard 頁面查看



(5) 打開 AppDelegate.m
      現在我們要把 AppDelegate 和 FBSDKApplicationDelegate 進行連接了啊
      首先需要 import FBSDKCoreKit.h


#import <FBSDKCoreKit/FBSDKCoreKit.h>

      然後加入


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [[FBSDKApplicationDelegate sharedInstance] application:application
    didFinishLaunchingWithOptions:launchOptions];
  return YES;
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
  return [[FBSDKApplicationDelegate sharedInstance] application:application
    openURL:url
    sourceApplication:sourceApplication
    annotation:annotation
  ];
}
      
      然後需要加入 AppEvent
      AppEvent 可以紀錄有多少人有開過你的應用程式
      然後可以在 Analytics for App Dashboard 查看


- (void)applicationDidBecomeActive:(UIApplication *)application {
  [FBSDKAppEvents activateApp];
}



2016年2月25日 星期四

【iOS/Facebook】針對 iOS 9 的 Facebook 設定

如果 App 的對象是包含iOS 9的用家, 就要留意一下了!
這是 Facebook 針對 iOS 9 版本的設定
是用來白名單 Facebook 網域(Domain)的

(1) 在Project 的 Info.plist -> Open As -> Source Code, 在</dict>前加入



<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>facebook.com</key>
    <dict>
      <key>NSIncludesSubdomains</key> <true/>        
      <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> <false/>
    </dict>
    <key>fbcdn.net</key>
    <dict>
      <key>NSIncludesSubdomains</key> <true/>
      <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>  <false/>
    </dict>
    <key>akamaihd.net</key>
    <dict>
      <key>NSIncludesSubdomains</key> <true/>
      <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> <false/>
    </dict>
  </dict>

</dict>

(2) 如果使用的 Facebook SDK 版本是 4.5 或之前, 加入


<key>LSApplicationQueriesSchemes</key>
<array>
    <string>fbapi</string>
    <string>fbapi20130214</string>
    <string>fbapi20130410</string>
    <string>fbapi20130702</string>
    <string>fbapi20131010</string>
    <string>fbapi20131219</string>    
    <string>fbapi20140410</string>
    <string>fbapi20140116</string>
    <string>fbapi20150313</string>
    <string>fbapi20150629</string>
    <string>fbauth</string>
    <string>fbauth2</string>
    <string>fb-messenger-api20140430</string>
</array>

(3) 如果版本是 4.6 之前, 要額外加入


<string>fb-messenger-platform-20150128</string>
<string>fb-messenger-platform-20150218</string>
<string>fb-messenger-platform-20150305</string>

(4) 如果版本是 4.6 或之後, 只需要加入


<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>

這幾段原始碼的作用是, 准許我們的 App 可以辨認用家手機上有沒有安裝 Facebook 應用程式, 而且在使用 Facebook 功能時可以順利的從 App 切換到 Facebook 應用程式 或 開啟瀏覽器進入 Facebook 頁面




【Facebook App】申請建立 Facebook App 並取得 App ID

Facebook SDK 提供很多不同的功能,讓程式開發者使用,使開發的程式更完善
功能有很多種類,例如 登入,分享,邀請等等
而使用Facebook SDK前,我們需要先申請建立 Facebook App
以使用更深入更完善的功能

申請建立 Facebook App是很簡單的喔~


(1) 按此 進入申請建立 Facebook App 的頁面


(2) "Display Name" 可以跟你的專案名字不同, 這是在登入, 分享等等時顯示出來的




(3) "Category" 就看看你的 App 是什麼類型嚕~(上面的只是例子, 夜雪隨便選擇的~呵)

(4) 然後我們要到 App Dashboard 設定我們的 Facebook App

(5) 選擇想設定的 Facebook App -> Settings -> add platform -> iOS


(6) 輸入 bundle id(在Xcode project可以找到), 選擇Single Sign On, 然後Save



(7) 最後在 App Review -> Status -> Make Public 選擇 Yes



(8) 在同一頁面的下方, 我們可以得知這隻 Facebook App 的權限有哪幾個
email
public_profile
user_friends
        這3個是預設的, 如果想再開其他權限就要向 Facebook 申請嚕~

(9) 在 Dashboard 頁面, 就可以找到 App ID 了!!






2016年2月24日 星期三

【Eclipse】遠端同步修改(RSE: Remote System Explorer)

【安裝 Remote System Explorer (RSE)】

(1) 打開 Eclipse 後, Help -> Install New Software

(2) 在 Work With 選取 Mars - http://download.eclipse.org/releases/mars 
      (如果版本不是 Mars, 請把 Mars 換成自己的版本名稱)

(3) 搜尋 remote

(4) tick 以下 4 個插件
Remote Command Shell Console 
Remote Services
Remote System Explorer End-User Runtime
Remote System Explorer User Actions


(5) 安裝完成後會被要求重開 Eclipse, 重開後就可以用到遠端(remote)的功能了喔~

--------------------------------------
【設定 Remote System Explorer (RSE)】

(1) 在右上角按 "Open Perspective" (有 "+" 符號的按鈕)

(2) 選擇 "Remote System Explorer"


(3) 在右上角就會出現快速切換 "Remote System Explorer" 的按鈕了喔-^0^-

(4) 按一按新出現的 "Remote System Explorer", 會切換到 RSE perspective
     (RSE perspective 預設是出現在左邊的)

(5) 然後按 "Define a connection to remote system" (有 "+" 符號的按鈕)


(6)  選擇 "SSH Only"


(7) "Parent Profile" 會自動產生的喔, "Host Name" 輸入遠端位址


(8) 按完成後, 會在左邊的 RSE perspective 裡看到剛剛新增的遠端資料夾
     打開後, 按 "Root", 就能登入~


(9) 登入後就能瀏覽遠端位址的全部檔案了喔!!
     有時候我們只想同步修改一個專案 (很多時候會放很多不同的專案在遠端位址的吧)
     這個時候, 就在想修改的專案 右鍵 -> "Create Remote Project"
     切換到 PHP perspective, 就能看到專案了啊

--------------------------------------
【新增 PHP 插件】

(1) 按 Help -> Install New Software

(2) 在 Work With 選取 Mars - http://download.eclipse.org/releases/mars 
      (如果版本不是 Mars, 請把 Mars 換成自己的版本名稱)

(3) 搜尋 pdt

(4) tick 全部 4 個插件
PHP Development Tools (PDT) Mylyn Integration 
ACTF Visualisation Extension for PDT Feature
PHP Development Tools (PDT)
PHP Development Tools (PDT)

(5) 安裝完成後會被要求重開 Eclipse, 重開後就可以用到PHP的功能了喔~

(6) 切換到 PHP perspective, 右鍵專案 -> Configure -> Add PHP Support



--------------------------------------
【開啟自動完成功能】

(1) 首先要把檔案設定成不隱藏
     Window -> Preferences (mac 的是 Eclipse -> Preferences)

(2) Remote Systems -> File -> 把 "Show hidden files" 打勾 -> Apply -> OK


(3) 切換到 PHP perspective, 打開專案, 找出並打開 .project 檔案


(4) 加入以下 2 行
<nature>org.eclipse.wt.jsdt.core.jsNature</nature>
<nature>org.eclipse.php.core.PHPNature</nature>


(5) 儲存後就可以用到自動完成的功能了喔!!

--------------------------------------
【開啟 Ctrl + Click 功能】

Ctrl + Click 點選 function / object 名時會直接跳到所在位置, 假設現在我們呼叫一個 function, "getName();", 想知道這個function的內容前, 我們首先要找出這個function的位置, 如果只有一兩個檔案還好, 但當我們的專案很龐大時, 檔案的數量太多時, 就不可能逐個檔案找了, 這時候只要用 Ctrl + Click, 就可以找到檔案位置了!

(1) 切換到 RSE perspective, 右鐽專案 -> 按 "Synchronise Cache"


這樣就可以把專案的所有檔案抓一份下來, 然後就可以用到 Ctrl + Click 功能了喔~~

--------------------------------------
【把遠端檔案匯入成本機檔案】

(1) 切換到 PHP perspective, 新增一個專案, 例如叫 "test"

(2) 切換到 RSE perspective, 右鍵想匯入的專案 -> "Import to project"


(3) 在 "into folder" 輸入 "test"


(4) 完成後就會在 PHP perspective 的 test 專案裡看到遠端專案的檔案

(5) 不要忘記要 "Add PHP Support", 使 "test" 變成PHP專案啊