首页 > 解决方案 > 在没有 SDK 的情况下从我的 Swift 应用程序向 Snapchat 发送文本和链接

问题描述

我正在将共享选项从我的应用程序集成到 Snapchat。我在对象中获得了一个动态 URL,如果设备上存在 Snapchat,则单击 Snapchat 的共享按钮直接打开应用程序并显示带有链接的文本。我正在使用下面的代码进行分享,这会在 Snapchat 上出现错误。下面是我的代码。

func shareTextOnSnapchat(obj:VideoData) {
    let shaUrl = URL(string: obj.share_url ?? "")
    if let myURL:URL = shaUrl{
        let promoText = "Check out this great new video from \(obj.name ?? ""), I found on talent app"
        let shareString = "snapchat://text=\(promoText)&url=\(myURL)"
        let escapedShareString = shareString.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)!
        let url = URL(string: escapedShareString)
        UIApplication.shared.openURL(url!)
    }
}

在此处输入图像描述

标签: iosswiftsnapchat

解决方案


我用它来将视频发布到 snapchat。您可以选择发布文本或视频。

使用的吊舱

pod 'SnapSDK', :subspecs => ['SCSDKCreativeKit']

import SCSDKCreativeKit

var scInstalled = false

override func viewDidLoad() {
    super.viewDidLoad()
    scInstalled = schemeAvailable(scheme: "snapchat://")
}

func ShowSnapchat(){
    if scInstalled {
        //shareTextOnSnapchat(obj:videoObj ?? VideoData())
        shareFileOnSnapchat(obj:videoObj ?? VideoData())
    }else{
        downloadSharingAppAlert(appName:"Snapchat")
    }
}


func shareTextOnSnapchat(obj:VideoData) {
    let shaUrl = URL(string: obj.share_url ?? "")
    if let myURL:URL = shaUrl{
        let originalString = "\(myURL)"
        let escapedString = originalString.addingPercentEncoding(withAllowedCharacters:CharacterSet.urlQueryAllowed)
        //let url  = URL(string: "snapchat://snap?text=\(escapedString!)")
        
        let url  = URL(string: "https://www.snapchat.com/send?text=\(escapedString!)")
        
        if UIApplication.shared.canOpenURL(url! as URL)
        {
            UIApplication.shared.open(url! as URL, options: [:], completionHandler: nil)
        }
    }
}


func shareFileOnSnapchat(obj:VideoData){
    //// SHARE VIDEO
    LoadingOverlay.shared.showLoaderView(view: self.view)
    let shaUrl = URL(string: obj.output_vid ?? "")
    if let myURL:URL = shaUrl{
        let snapVideo = SCSDKSnapVideo(videoUrl: myURL)
        let snapContent = SCSDKVideoSnapContent(snapVideo: snapVideo)
        // Send it over to Snapchat
        snapAPI.startSending(snapContent) { (error) in
            if let error = error {
                print(error.localizedDescription)
                LoadingOverlay.shared.hideLoaderView()
                MyCustomAlert.sharedInstance.ShowAlert(vc: self, myTitle: "", myMessage: StringClass.sharedInstance.lcStr_oopsSomethingWentwrong)
            } else {
                // success
                print("Posted to snapchat")
                LoadingOverlay.shared.hideLoaderView()
                MyCustomAlert.sharedInstance.ShowAlert(vc: self, myTitle: "", myMessage: StringClass.sharedInstance.lcStr_postedToSnapchat)
            }
        }
    }
}
}

func downloadSharingAppAlert(appName:String){
    var appStoreURL = "https://apps.apple.com/in/app/snapchat/id447188370"
    //Open Appstore for Download
}

推荐阅读