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

Amazon CognitoとAmazon S3を組み合わせてiOS向けの写真共有サービスを作...

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for Takaaki Tanaka Takaaki Tanaka
February 11, 2017

Amazon CognitoとAmazon S3を組み合わせてiOS向けの写真共有サービスを作ってみた

合同勉強会 in 福岡での発表資料です

https://connpass.com/event/49117/

Amazon CognitoとAmazon S3を組み合わせてiOS向けの写真共有サービスを作るまでの過程を話してきました。

Avatar for Takaaki Tanaka

Takaaki Tanaka

February 11, 2017

More Decks by Takaaki Tanaka

Other Decks in Technology

Transcript

  1. • ాத ޹໌ (Takaaki Tanaka) • Ϋϥεϝιουגࣜձࣾ • iOS ΞϓϦέʔγϣϯΤϯδχΞ

    • @kongmingtrap • iOS Developer (Swift / Objective-C) • GyazSquare / GitHub
  2. Fabric SDK DMBTT"QQ%FMFHBUF6*3FTQPOEFS 6*"QQMJDBUJPO%FMFHBUF\ … func application(_ application: UIApplication, didFinishLaunchingWithOptions

    launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. Fabric.with([AWSCognito.self, Twitter.self]) return true }
  3. IAM

  4. IAM

  5. Login Button let logInButton = TWTRLogInButton { (session, error) in

    if let unwrappedSession = session { let value = unwrappedSession.authToken + ";" + unwrappedSession.authTokenSecret let provider = TwitterProvider(tokens: ["api.twitter.com": value as NSString]) let credentialsProvider = AWSCognitoCredentialsProvider( regionType:.APNortheast1, identityPoolId: "ap-northeast-1:xxxxxxxx-xxxx-xxxx- xxxx-xxxxxxxxxxxx", identityProviderManager: provider) let configuration = AWSServiceConfiguration(region:.APNortheast1, credentialsProvider: credentialsProvider) AWSServiceManager.default().defaultServiceConfiguration = configuration } else { NSLog("Login error: %@", error!.localizedDescription); } }
  6. func captureImage(sampleBuffer: CMSampleBuffer) -> UIImage { let imageBuffer: CVImageBuffer =

    CMSampleBufferGetImageBuffer(sampleBuffer)! CVPixelBufferLockBaseAddress(imageBuffer, CVPixelBufferLockFlags(rawValue: 0)) let baseAddress: UnsafeMutableRawPointer = CVPixelBufferGetBaseAddressOfPlane(imageBuffer, 0)! let bytesPerRow: Int = CVPixelBufferGetBytesPerRow(imageBuffer) let width:Int = CVPixelBufferGetWidth(imageBuffer) let height:Int = CVPixelBufferGetHeight(imageBuffer) let colorSpace: CGColorSpace = CGColorSpaceCreateDeviceRGB() let newContext: CGContext = CGContext(data: baseAddress, width: width, height: height, bitsPerComponent: 8, bytesPerRow: bytesPerRow, space: colorSpace, bitmapInfo: CGImageAlphaInfo.premultipliedFirst.rawValue| CGBitmapInfo.byteOrder32Little.rawValue)! let imageRef: CGImage = newContext.makeImage()! let resultImage = UIImage(cgImage: imageRef, scale: 1.0, orientation: UIImageOrientation.right) return resultImage }
  7. let request = AWSS3TransferManagerUploadRequest() request?.bucket = "report-camera" request?.key = "images/original/\

    (createAt.timeIntervalSince1970)-\(imageURL.lastPathComponent)" request?.body = imageURL return AWSS3TransferManager.default().upload(request!) S3΁ૹ৴