14
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【iOS】「Firebase」と「nifty cloud mobile backend」のPush通知サービスを比較してみる

Last updated at Posted at 2016-08-24

はじめに

Firebase及びnifty cloud mobile backend導入からプッシュ通知を受信するところまで説明してできればそれぞれのメリット、デメリットを書ければと思います!

Firebase

上記リンクを開いてまずはプロジェクトを追加しましょう!

スクリーンショット 2016-08-24 午後1.52.23.png

__新規プロジェクト__を作成ボタンをポチィー!!

適当にほげほげする

スクリーンショット 2016-08-24 午後1.52.45.png

スクリーンショット 2016-08-24 午後1.54.01.png

プロジェクトが作成されるので iOSアプリにFirebaseを追加 っていうところを選択!

スクリーンショット 2016-08-24 午後1.54.25.png

BundleIDを入力するように言われるので入力する
スクリーンショット 2016-08-24 午後1.54.39.png
Xcodeプロジェクト側と同じもの

あとは GoogleService-Info.plist をプロジェクトに追加して画面の指示に従う。

Podfileに追加するものに関しては以下でも良い

Podfile
pod 'Firebase/Core'
pod 'Firebase/Messaging'

pod install が終わったら次は AppDelegate の作業だ!

AppDelegate.swift
import UIKit
import Firebase

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        FIRApp.configure()
        
        let settings: UIUserNotificationSettings =
            UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil)
        application.registerUserNotificationSettings(settings)
        application.registerForRemoteNotifications()
        
        return true
    }
    
    func application(application: UIApplication, didRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings) {
        if notificationSettings.types != .None {
            application.registerForRemoteNotifications()
        }
    }
    
    func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
        FIRInstanceID.instanceID().setAPNSToken(deviceToken, type: FIRInstanceIDAPNSTokenType.Unknown)
    }
}

大体こんな感じだ。これでいける

スクリーンショット 2016-08-24 午後2.55.32.png
スクリーンショット 2016-08-24 午後2.55.51.png

画像のように .p12 ファイルをアップロードしておく。

左のメニューから Notifications を選択してプッシュ通知を登録する

スクリーンショット 2016-08-24 午後2.58.49.png

上記のような最小構成で十分!

では、やってみよう!!

IMG_0069.PNG

キタコレ!!
若干ロック画面の __渡辺曜__ちゃんが見えますが気にしないでください
\ヨーソロー!/

メリット

  • ドキュメントが豊富なのでググればとりあえずなんとかなる
  • 実装が簡単
  • チュートリアルやサンプルが存在している
  • Pythonから操作ができる

デメリット

  • Web操作画面がちょっと難しい
  • デバイストークンの登録数が確認できない(できるかもしれないけど私のブラウザ操作技術では確認できない)

nifty cloud mobile backend

詳しくは、上記記事に書いてるので参考にしてもらえればと思います。

Podfileに以下を追加

Podfile
platform :ios, '8.0'
use_frameworks!

pod 'NCMB', :git => 'https://github.com/NIFTYCloud-mbaas/ncmb_ios.git'

追加し終わったら pod install

Xcodeから File > New > File... を選択して Bridging-Header.h ファイルを作成する。

Bridging-Header.h
#ifndef Bridging_Header_h
#define Bridging_Header_h

// ここを追加
#import <NCMB/NCMB.h>

#endif /* Bridging_Header_h */

プロジェクト > Build Settings に行き、検索窓から objective-c bridging header と検索する

スクリーンショット 2016-08-24 午後4.03.54.png

ここの窓に先ほど作った Bridging-Header.h をドラッグ&ドロップをする

AppDelegate.swift は以下のようにすると最小構成ではあるがプッシュ通知は受信できる

AppDelegate.swift
import UIKit
import NCMB

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    let applicationKey = "APPLICATION_KEY"
    let clientKey = "CLIENT_KEY"

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        NCMB.setApplicationKey(applicationKey, clientKey: clientKey)
        
        let settings: UIUserNotificationSettings =
            UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil)
        application.registerUserNotificationSettings(settings)
        application.registerForRemoteNotifications()
        
        return true
    }
    
    func application(application: UIApplication, didRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings) {
        if notificationSettings.types != .None {
            application.registerForRemoteNotifications()
        }
    }
    
    func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
        let installation = NCMBInstallation.currentInstallation()
        installation.setDeviceTokenFromData(deviceToken)
        installation.saveInBackgroundWithBlock { (error: NSError!) -> Void in
            if (error != nil){
                print("Failure")
            } else {
                print("Success")
            }
        }
    }
}

いざ通知!!

写真 2016-08-24 午後4 25 58.png

さっきから1時間半経っていますが多分気のせいです。

メリット

  • 実装が簡単
  • ユーザコミュニティが活発なのでとりあえず聞けばなんとかなる?
  • チュートリアルやサンプルが存在している
  • Web操作画面でデバイストークンなどを実際にみることができる
  • リッチプッシュが無料で使える
  • Web操作画面が直感的

デメリット

  • GitHubにあるサンプルがちょっと複雑なものがある?
  • Web操作画面及びアプリ開発時に設定項目がちょっと多いかも

最後に

上げたメリット的な感じにはnifty cloud mobile backendのほうがいいのかな?っていう感じにはなってますが、全然そんなことないと思います。Firebaseは今からドンドン盛り上がりを見せてくれると思いますし🍣

プッシュ通知だけのサービスを追加するんだったらどっちでもいい。

ただAnalytics等他の機能を追加していくのであればFirebaseを私は推します。
ラブライブ!サンシャイン!!の推しメンは __渡辺曜__ちゃんです。

14
15
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?