プログラミングノート

一からものを作ることが好きなエンジニアの開発ブログです。

Aviary改めAdobeCreativeSDK Image Editing Componentの導入方法

写真, 動画系アプリを中心に開発しているため、長らく画像編集エディターとしてAviary SDKのお世話になっていたのですが、AviaryがAdobeに買収され、今後新しいアプリケーションでは利用できなくなってしまったため、AdobeCreativeSDK Image Editing Componentの利用に切り替えました。

新しいSDKの中身自体はAviaryほぼそのまんまなのですが、インストール周りが色々と面倒くさかったので複数アプリでの導入が簡単にできるようpodspecを作成しました。

Adobe Creative SDKの準備

Adobe Creative SDKのサイトにログインし、My Appsから新しいアプリケーションを登録、CLIENT IDとSECRETを発行しておきます。

Downloadsより、iOS SDKの最新版(今回はv0.7.2072)をダウンロードします。この中にはいくつかのframeworkが含まれているのですが、その中から下記のファイルをAdobeCreativeSDK_0.7.2072.zipとして再度圧縮して、httpで取得できる場所(S3とか)にアップロードしておきます。(httpsだと動作しません)

AdobeCreativeSDK_0.7.2072.zip

AdobeCreativeSDK
└ AdobeCreativeSDKFoundation.framework
└ AdobeCreativeSDKImage.framework
└ AdobeCreativeSDKFoundationResources.bundle
└ AdobeCreativeSDKImageResources.bundle

podspec

このpodspecファイルを通信で取得できる場所に設置します。

AdobeCreativeSDK_0.7.2072.podspec.json

{
  "name": "AdobeCreativeSDK",
  "version": "0.7.2072",
  "platforms": {
    "ios": "6.0"
  },
  "summary": "AdobeCreativeSDK for iOS",
  "homepage": "https://creativesdk.adobe.com",
  "license": {
    "type": "Commercial",
    "text": "Copyright © 2014 Adobe Systems Incorporated.\n"
  },
  "authors": {
    "Adobe Systems, Inc.": "https://creativesdk.zendesk.com"
  },
  "source": {
    "http": "http://アップロードしたURLに書き換える/AdobeCreativeSDK_0.7.2072.zip"
  },
  "resources": [
  	"AdobeCreativeSDK/AdobeCreativeSDKFoundationResources.bundle",
  	"AdobeCreativeSDK/AdobeCreativeSDKImageResources.bundle"
  ],
  "vendored_frameworks": [
  	"AdobeCreativeSDK/AdobeCreativeSDKFoundation.framework",
  	"AdobeCreativeSDK/AdobeCreativeSDKImage.framework"
  ],
  "frameworks": [
    "SystemConfiguration",
    "CoreData",
    "Accelerate",
    "MessageUI",
    "OpenGLES",
    "QuartzCore",
    "StoreKit",
    "MobileCoreServices"
  ],
  "libraries": [
    "z",
    "sqlite3",
    "c++"
  ],
  "requires_arc": true
}

(AdobeCreativeSDK_0.7.2072.zipを手軽にDropboxに入れて試してみたり、Adobeのサイトから直接取得しようとしたり、ローカルに置いてあるzipから取得しようとしてみたりしたのですが、全部上手く行かなく、最終的にS3に置く形で上手く動きました。)

ライブラリのインストール

開発しているアプリにAdobeCreative SDKをインストールします。
あとはpod installするだけ。

Podfile

platform :ios, '7.0'
xcodeproj './Sample.xcodeproj'

pod 'AdobeCreativeSDK', :podspec => 'http://.../AdobeCreativeSDK_0.7.2072.podspec.json'

SDKの実装サンプル

実装についてはAviaryと同じロジックですが、クラス名などが変更になっています。
詳細なドキュメントはこちら。

最低限の実装

#import <AdobeCreativeSDKFoundation/AdobeCreativeSDKFoundation.h>
#import <AdobeCreativeSDKImage/AdobeCreativeSDKImage.h>
...

- (void)actionAviary{
    NSString* const CreativeSDKClientId = @"CLIENTKEY";
    NSString* const CreativeSDKClientSecret = @"SECRET";
    [[AdobeUXAuthManager sharedManager] setAuthenticationParametersWithClientID:CreativeSDKClientId withClientSecret:CreativeSDKClientSecret];
    
    UIImage *image = [UIImage imageNamed:@"sample.jpg"];
    AdobeUXImageEditorViewController *editorController = [[AdobeUXImageEditorViewController alloc] initWithImage:image];
    [editorController setDelegate:self];
    [self presentViewController:editorController animated:YES completion:nil];
}

- (void)photoEditor:(AdobeUXImageEditorViewController *)editor finishedWithImage:(UIImage *)image{
    UIImage *rawImage = [UIImage imageNamed:@"sample.jpg"];
    [editor enqueueHighResolutionRenderWithImage:rawImage completion:^(UIImage *result, NSError *error) {
        if(result){
        }
        [editor dismissViewControllerAnimated:YES completion:nil];
    }];
}

- (void)photoEditorCanceled:(AdobeUXImageEditorViewController *)editor{
}