2016年6月21日 星期二

[教學] 實作Google Firebase的Notification 使用Objective-C

  • Firebase是今年Google在開發者大會發表的App分析工具,也把推播整合了進去,以下示範實作推播,程式碼部分直接用Github上的範例專案
  • https://github.com/firebase/quickstart-ios
  • 說穿了就是在Apple的APNS中間夾了一層Google做的interface,讓開發者不用弄一些伺服器那邊的麻煩手續
  • 圖片多,請注意網路流量。

1.建立新專案


 將專案的Bundle ID記下來
新增說明文字
2.使用terminal的cocopods初始化專案,不會使用cocopods的,在此不教學喔!
cd FirebasePusher/
pod init
在專案根目錄打開PodFile,填入
pod 'Firebase'
pod 'Firebase/Messaging'

使用terminal安裝Firebase
pod install
3.在Firebase網站,建立新專案


 選擇中間,加入iOS SDK


 8.將下載下來的plist丟進Xcode

記得選Copy items if needed
 4.接下來製作"推播憑證授權要求",打開鑰匙圈存取
 填入你的Email與名字,記得選"儲存到磁碟"
 將憑證儲存到桌面
 5.在Apple Developer新增App ID
 填入App 名稱
 填入剛剛記下來的Bundle ID
 記得勾選Push Notifications,按下Continue
 注意Push Notifications現在是Configurable的狀態,按下Register
 6.在Certificates的Development新增憑證

 選擇剛剛加入的App ID
 上傳剛剛從鑰匙圈製作的"推播憑證授權要求"
 下載憑證,並點兩下安裝
 在鑰匙圈裡可以看到安裝的憑證,匯出專用密鑰
 匯出時會要求設定密碼,填入定義的密碼
 7.到Apple Developer的Provisioning Profiles新增開發憑證
點選右上角新增憑證

 選擇iOS App Development

選擇剛剛新增的App ID
 選擇開發人員憑證
 選擇開發裝置
 為此開發憑證命名
 下載此憑證並點兩下安裝
 8.到Firebase網站的專案底下,匯入憑證

 上傳剛剛匯出的密鑰,記得打上剛剛定義的密碼

9.到Xcode中寫程式囉,可以參考一下網址的程式碼,直接複製貼上

或者照我做

AppDelegate.m最上方引入Firebase

@import Firebase;
@import FirebaseMessaging;
  • 在didFinishLaunchingWithOptions的函式填入


  // Register for remote notifications
  if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_7_1) {
    // iOS 7.1 or earlier
    UIRemoteNotificationType allNotificationTypes =
    (UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge);
    [application registerForRemoteNotificationTypes:allNotificationTypes];
  } else {
    // iOS 8 or later
    // [END_EXCLUDE]
    UIUserNotificationType allNotificationTypes =
    (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge);
    UIUserNotificationSettings *settings =
    [UIUserNotificationSettings settingsForTypes:allNotificationTypes categories:nil];
    [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
    [[UIApplication sharedApplication] registerForRemoteNotifications];
  }

  // [START configure_firebase]
  [FIRApp configure];
  // [END configure_firebase]

  // Add observer for InstanceID token refresh callback.
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tokenRefreshNotification:)
                                               name:kFIRInstanceIDTokenRefreshNotification object:nil];

//2016/06/23 以下不用做
  • 在空白處新增一個函式 
// [START connect_to_fcm]
- (void)connectToFcm {
  [[FIRMessaging messaging] connectWithCompletion:^(NSError * _Nullable error) {
    if (error != nil) {
      NSLog(@"Unable to connect to FCM. %@", error);
    } else {
      NSLog(@"Connected to FCM.");
    }
  }];
}
// [END connect_to_fcm]
  • 在 applicationDidBecomeActive填入
[self connectToFcm];

//2016/06/23  以上不用做

10.建置專案並安裝至手機上,對詢問推播按允許

11.到Firebase的網站專案左側Notifications新增一則訊息,並送出

 12.成功!