Upgrade to Pro — share decks privately, control downloads, hide ads and more …

firebase勉強会資料

gupuru
October 03, 2016

 firebase勉強会資料

gupuru

October 03, 2016
Tweet

More Decks by gupuru

Other Decks in Programming

Transcript

  1. iOSͷಋೖ pod 'Firebase/Core' import UIKit import Firebase @UIApplicationMain class AppDelegate:

    UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { //௥Ճ FIRApp.configure() return true } }
  2. Androidͷಋೖ compile 'com.google.firebase:firebase-core:9.6.1' public class MainActivity extends AppCompatActivity { private

    final MainActivity self = this; private FirebaseAnalytics mFirebaseAnalytics; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mFirebaseAnalytics = FirebaseAnalytics.getInstance(this); } }
  3. Cloud Messaging » ϓογϡ௨஌ » iOS, Android, Web » ແྉ

    » Notification MessageͱData Messageͷ̎छྨ
  4. Notification Message { "to" : "HHwgIpoDKCIZvvDMExUdFQ3P1...", "notification" : { "body"

    : "΅Ͱ͍", "title" : "͍ͨͱΔ", "icon" : "myicon" } } curl --header "Authorization: key=...guQidTc7xzs8" \ --header Content-Type:"application/json" \ https://fcm.googleapis.com/fcm/send \ -d "{\"to\": \"...ifS-oaJevN_VwU0Y\",\"priority\":\"high\",\"notification\": {\"title\": \"this is title\", \"body\": \"this is body\"}}"
  5. Data Message { "to" : "xUdFQ3P1...", "data" : { "name"

    : "fox", "body" : "neko", "Place" : "horaana" }, } curl --header "Authorization: key=...guQidTc7xzs8" \ --header Content-Type:"application/json" \ https://fcm.googleapis.com/fcm/send \ -d "{\"to\": \"...aJevN_VwU0Y\",\"priority\":\"high\",\"data\": {\"custom_title\": \"this is custom title\", \"custom_body\": \"this is custom body\", \"icon\": \"ic_stat_ic_notification\"}}"
  6. ௨஌ͷϋϯυϦϯά public class MyFirebaseMessagingService extends FirebaseMessagingService { public void onMessageReceived(RemoteMessage

    remoteMessage) { Log.d(TAG, "From: " + remoteMessage.getFrom()); if (remoteMessage.getData() != null) { //data } if (remoteMessage.getNotification() != null) { //notification } } } <service android:name=".MyFirebaseMessagingService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT"/> </intent-filter> </service>
  7. Authentication » ϩάΠϯपΓ » ϝΞυ, ಗ໊ΞΧ΢ϯτ, Google, Facebook, Twitter, GitHubͳͲʹରԠ

    » ແྉ » FirebaseUIΛ࢖͑͹ɺuiͳͲ΋؆୯ʹ࣮૷Ͱ͖Δ » iOS, Android, Web
  8. Androidͷಋೖ(firebase UI) compile 'com.firebaseui:firebase-ui-auth:0.6.0' FirebaseAuth auth = FirebaseAuth.getInstance(); if (auth.getCurrentUser()

    != null) { //ϩάΠϯࡁΈ } else { startActivityForResult( AuthUI.getInstance().createSignInIntentBuilder().build(), RC_SIGN_IN); } protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == RC_SIGN_IN) { if (resultCode == RESULT_OK) { // ϩάΠϯ੒ޭ } } }
  9. Webͷ৔߹ <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Firebase ui sample</title>

    <!-- firebaseͷ͋ΕΛషͬͯ͜͜ʹ --> <script src="https://www.gstatic.com/firebasejs/ui/live/0.5/firebase-ui-auth.js"></script> <link type="text/css" rel="stylesheet" href="https://www.gstatic.com/firebasejs/ui/live/0.5/firebase-ui-auth.css" /> <script type="text/javascript"> // FirebaseUI config. var uiConfig = { 'signInSuccessUrl': '੒ޭޙͷurl', 'signInOptions': [ firebase.auth.FacebookAuthProvider.PROVIDER_ID, firebase.auth.EmailAuthProvider.PROVIDER_ID ], }; var ui = new firebaseui.auth.AuthUI(firebase.auth()); ui.start('#firebaseui-auth-container', uiConfig); </script> </head> <body> <div id="firebaseui-auth-container"></div> </body> </html>
  10. iOSͷಋೖ pod 'Firebase/Database' import UIKit import Firebase @UIApplicationMain class AppDelegate:

    UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { //௥Ճ FIRApp.configure() return true } }
  11. import UIKit import FirebaseDatabase class ViewController: UIViewController { let rootRef

    = FIRDatabase.database().reference() override func viewDidLoad() { super.viewDidLoad() //ಡΈࠐΈ rootRef.observe(.value, with: { snapshot in print("\(snapshot.key) -> \(snapshot.value)") }) //ॻ͖ࠐΈ rootRef.child("food").setValue("ΓΜ͝͞·") } }
  12. iOSͷಋೖ pod 'Firebase/Storage' import UIKit import Firebase @UIApplicationMain class AppDelegate:

    UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { //௥Ճ FIRApp.configure() return true } }
  13. Ξοϓϩʔυ import FirebaseStorage class ViewController: UIViewController { let storage =

    FIRStorage.storage() override func viewDidLoad() { super.viewDidLoad() let storageRef = storage.reference(forURL: "gs://fir-handson-ce2a8.appspot.com") if let data = UIImagePNGRepresentation(UIImage(named: "ie")!) { let riversRef = storageRef.child("images/ie.png") riversRef.put(data, metadata: nil, completion: { metaData, error in print(metaData) print(error) }) } } }
  14. μ΢ϯϩʔυ import FirebaseStorage class ViewController: UIViewController { let storage =

    FIRStorage.storage() override func viewDidLoad() { super.viewDidLoad() let storageRef = storage.reference(forURL: "gs://fir-handson-ce2a8.appspot.com") let ieRef = storageRef.child("images/hogehoge.png") ieRef.data(withMaxSize: 1 * 1024 * 1024) { (data, error) -> Void in if (error != nil) { print(error) } else { let image: UIImage! = UIImage(data: data!) } } } }
  15. FirebaseRemoteConfig remoteConfig; remoteConfig = FirebaseRemoteConfig.getInstansce(); //σϕϩούʔϞʔυࢦఆ FirebaseRemoteConfigSettings configSettings = new

    FirebaseRemoteConfigSettings.Builder() .setDeveloperModeEnabled(BuildConfig.DEBUG) .build(); remoteConfig.setConfigSettings(configSettings); //σϑΥϧτͷ஋ΛಡΈࠐΉ remoteConfig.setDefaults(R.xml.remote_config_defaults); remoteConfig.fetch(43200) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { //஋Λ൓ө remoteConfig.activateFetched(); } else { //fetchࣦഊ } } });
  16. ɹσΟʔϓϦϯΫͷઃఆ(Andoirdͷ৔߹) <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />

    <action android:name="android.intent.action.VIEW" /> <data android:scheme="https" android:host="fir-sample-51a1e.firebaseapp.com" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> </intent-filter> </activity>
  17. ট଴ Intent intent = new AppInviteInvitation.IntentBuilder(getString(R.string.invitation_title)) .setMessage(getString(R.string.invitation_message)) .setDeepLink(Uri.parse(getString(R.string.invitation_deep_link))) .setCustomImage(Uri.parse(getString(R.string.invitation_custom_image))) .setCallToActionText(getString(R.string.invitation_cta))

    .build(); startActivityForResult(intent, REQUEST_INVITE); ݁Ռ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_INVITE) { if (resultCode == RESULT_OK) { String[] ids = AppInviteInvitation.getInvitationIds(resultCode, data); for (String id : ids) { Log.d(TAG, "onActivityResult: sent invitation " + id); } } } }
  18. ड৴ @Override protected void onCreate(Bundle savedInstanceState) { mGoogleApiClient = new

    GoogleApiClient.Builder(this) .addApi(AppInvite.API) .enableAutoManage(this, this) .build(); boolean autoLaunchDeepLink = true; AppInvite.AppInviteApi.getInvitation(mGoogleApiClient, this, autoLaunchDeepLink) .setResultCallback( new ResultCallback<AppInviteInvitationResult>() { @Override public void onResult(AppInviteInvitationResult result) { if (result.getStatus().isSuccess()) { Intent intent = result.getInvitationIntent(); String deepLink = AppInviteReferral.getDeepLink(intent); String invitationId = AppInviteReferral.getInvitationId(intent); } } }); }