エディターの統合

    エディターの統合


    記事の要約

    コードのインストール

    ココアポッド

    Podfileに以下のコードを追加します。

    source 'https://github.com/CocoaPods/Specs.git'
    
        # Match the Version with the Project's Minimum Supported Version
        # Shoplive iOS SDK requires iOS 11.0 or later.
        platform :ios, '11.0'
        use_frameworks!
    
        # Set the Project Target for Shoplive iOS SDK Installation
        target 'ShortformProj' do
            pod 'ShopliveShortformEditorSDK', '1.6.0'
          	pod 'ShopliveSDKCommon', '1.6.0'
        end

    Swiftパッケージマネージャー

    Package Dependencies に以下を追加します。

    dependencies: [
        .package(url: "https://github.com/shoplive/shortform-ios", .exact(from: "1.6.0")),
        .package(url: "https://github.com/shoplive/common-ios", .exact(from: "1.6.0"))
    ]

    インストールが失敗した場合は、キャッシュをクリアします。

    ターミナルで次のコマンドを実行して、キャッシュをクリアします。

    rm -rf ~/Library/Caches/org.swift.swiftpm
    rm -rf ~/Library/org.swift.swiftpm

    ShopLiveShortformEditorSDK は FFMpeg ライブラリに依存しています。

    ターミナルで次のコマンドを実行して、キャッシュをクリアします。

    以下のFFMpeg SPMまたはお好みのバージョンのFFMpegライブラリを追加してください

    dependencies: [
        .package(url: "https://github.com/tylerjonesio/ffmpeg-kit-spm/", .branch(from: "main"))
    ]

    AccessKey の適用


    import ShopliveSDKCommon
    @main
    class AppDelegate: UIResponder, UIApplicationDelegate {
        func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
            // Override point for customization after application launch.
          ShopLiveCommon.setAccessKey(accessKey: "YOUR_ACCESSKEY") //required
          return true
        }
    }

    アクセスキー

    アクセスキーとシークレットキーは、Shopliveの担当者にご確認ください。


    ShopLiveEditorの適用

    Shopliveメディアピッカー

    このクラスでエディターの機能を使用したい場合は、Shoplive独自のAlbumPickerを使用できます。


    import ShopliveSDKCommon
    import ShopLiveShortformEditorSDK 
    
    class ViewController : UIViewController {
     
        func startMediaPicker() {
            ShopLiveMediaPicker.shared
                .setDelegate(self)
                .setPermissionHandler(nil)
                .start(self, type: .image) // type : .video
        }
    }
    extension ViewController : ShopLiveMediaPickerDelegate { 
        func onShopLiveMediaPickerError(error : ShopLiveCommonError) {
    
        }
        
        func onShopLiveMediaPickerDidPickVideo(absoluteUrl: URL, relativeUrl: URL) {
            
        }
        
        func onShopLiveMediaPickerDidPickImage(imageUrl: URL) {
            print("Picker Image Selected image: \(imageUrl)")
            let image = UIImage(contentsOfFile: imageUrl.path)
            coverPickerImageResultPopUp.setResultImage(image: image)
            coverPickerImageResultPopUp.alpha = 1
            ShopLiveMediaPicker.shared.close()
        }
    
        func onShopLiveMediaPickerCancelled() { 
    
        }
    }

    Shopliveビデオエディター

    このクラスでエディターの機能を使用したい場合は、ShopLive独自のVideoEditorを使用できます。


    import ShopliveSDKCommon
    import ShopLiveShortformEditorSDK 
    
    class ViewController : UIViewController {
     
        func startVideoEditor() {
            let cropOption = ShopliveVideoEditorAspectRatio(width: OptionSettingModel.editorWidth,
                                                            height: OptionSettingModel.editorheight,
                                                            isFixed: OptionSettingModel.editorIsFixed)
    
            let trimOption = ShopliveVideoEditorTrimOption(minVideoDuration: 3,
                                                           maxVideoDuration: 90)
            
            let videoOutPutOption = ShopLiveShortformEditorVideoOuputOption(videoOutputQuality: .max,
                                                                            videoOutputResoltuion: ._1080)
            
            
            let visibleContents = ShopLiveShortFormEditorVisibleContent(isDescriptionVisible: OptionSettingModel.editorShowDescription,
                                                                        isTagsVisible: OptionSettingModel.editorShowTags,
                                                                        editOptions: [.volume])
            
            
            ShopliveVideoEditor.shared
                .setPermissionHandler(nil)
                .setConfiguration(.init(videoCropOption: cropOption,
                                        videoOutputOption: videoOutPutOption,
                                        videoTrimOption: trimOption,
                                        visibleContents: visibleContents))
                .setDelegate(self)
                .start(self, data: .init(videoUrl: localUrl,isCreatedShortform: true))
        }
    }
    extension ViewController : ShopLiveVideoEditorDelegate { 
        func onShopLiveVideoEditorError(error : ShopLiveCommonError) {
    
        }
        
        func onShopLiveVideoEditorVideoConvertSuccess(videoPath : String) {
            
        }
        
        func onShopLiveVideoEditorUploadSuccess(shortsId : String) {
            ShopLiveMediaPicker.shared.close()
        }
    
        func onShopLiveVideoEditorCancelled() { 
    
        }
    }

    Shopliveカバーピッカー

    このクラスでエディターの機能を使用する場合は、ShopLive 独自の CoverPicker を使用できます。
    CoverPicker を使用すると、作成した短いフォームのカバー写真を変更できます。


    import ShopliveSDKCommon
    import ShopLiveShortformEditorSDK 
    
    class ViewController : UIViewController {
    
        func startCoverPicker() {
            let cropOption = ShopLiveShortFormEditorAspectRatio(width: 9,
                                                            height: 16,
                                                            isFixed: true)
            
            let visibleActionButton = ShopLiveCoverPickerVisibleActionButton(editOptions: [.crop])
            
            ShopLiveCoverPicker.shared
                .setConfiguration(.init(cropOption: cropOption,
                                        visibleActionButton: visibleActionButton))
                .setDelegate(vc)
                .start(vc, data: .init(videoUrl: videoUrl,shortsId: nil))
        }
    }
    extension ViewController : ShopLiveCoverPickerDelegate { 
        func onShopLiveCoverPickerError(error : ShopLiveCommonError) {
    
        }
        
        func onShopLiveCoverPickerCoverImageSuccess(image : UIImage?) {
            
        }
        
        func onShopLiveCoverPickerUploadSuccess(shortsId : String) {
            ShopLiveMediaPicker.shared.close()
        }
    
        func onShopLiveCoverPickerCancelled() { 
    
        }
    }