7

UIActivityViewController を使用して単純なテキストだけを共有したい 私は xcode 6.3 で迅速に使用しています コードは非常に単純で、写真には最適ですが、テキストだけでなく、objectsToShare に Web URL を含めたくありません。コードは次のとおりです。

var objectsToShare: ["some text to share"]! 
let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)

//handler for completed task
activityVC.completionHandler = {(activityType, completed:Bool) in
            if !completed {
                println("cancelled")
                return
            }
reportCompleted() //report to server it's done.
 }

//Excluded Activities Code
activityVC.excludedActivityTypes = [UIActivityTypeAirDrop, UIActivityTypeAddToReadingList, UIActivityTypeCopyToPasteboard ]

//activate the share view
self.presentViewController(activityVC, animated: true,  completion: {
            (complete)  in
            println(complete)

        })

これで、ユーザーが Facebook を使用しているかどうかにすべて依存していることがわかりました。電話だけでなく、設定にも依存します。(私はシミュレーターからではなく、Facebook の設定を持つ自分の携帯電話 6 から直接それを試しました) このコードは一度は正常に機能し、テキストではなく画像に対してはまだ正常に機能していましたが、何らかの理由でテキスト共有に対して機能しなくなりました。テキスト自体に何か関係があるのか​​もしれませんし、私のコードが良くないのかもしれませんし、Facebook が何かを変更したのかもしれません。

主題について考えてくれてありがとう。

さらに奇妙にするために、さらに2つの奇妙なものを見つけました。

  1. パブリッシュ テキストのコードは、シミュレーターで動作しています (Facebook の設定に追加する限り)。
  2. Web URL に追加すると (デバイス内で) 動作しますが、Web URL を削除すると動作しません。

//動作するコード:

var myWebsite = NSURL(string: "http://www.someurl.com/")

    let textToShare = "Swift is awesome!  Check out this website about it!"

     objectsToShare = [textToShare , myWebsite!]
//continue regular.

//動作しないコード:

    let textToShare = "Swift is awesome!  Check out this website about it!"

     objectsToShare = [textToShare ]
4

5 に答える 5

4

私が読んだところ、問題は iOS 8.3 ではなく、FacebookApp v29 であり、今日の更新では修正されていません。FacebookApp をアンインストールすると機能します。

画像を投稿することはできませんが、Facebook アプリをインストールしてこのコードを試してみると、違いがわかります。

func didPressShare(sender: AnyObject) {
    if SLComposeViewController.isAvailableForServiceType(SLServiceTypeFacebook){
        var facebookSheet:SLComposeViewController = SLComposeViewController(forServiceType: SLServiceTypeFacebook)
        facebookSheet.setInitialText("This is without facebook on device")
        self.presentViewController(facebookSheet, animated: true, completion: nil)
    } else {
        var alert = UIAlertController(title: "Accounts", message: "Please login to a Facebook account to share.", preferredStyle: UIAlertControllerStyle.Alert)
        alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
        self.presentViewController(alert, animated: true, completion: nil)
    }

}

彼らが言ったように:「遅れて申し訳ありませんが、この修正は v31 に予定されています。遅れの理由は、App Store で承認された更新プログラムを取得するサイクルに時間がかかるためです。しばらくお待ちください。」

https://developers.facebook.com/bugs/949486035103197/

彼らは、次のアップデートで修正されると言っています。

于 2015-05-13T13:19:44.260 に答える
3

私は同じ問題に直面していますが、修正できませんでした。これは私がこれまでに見つけたものです:

  • デバイスから Facebook.app を削除すると、バグを修正できます (ただし、解決策ではありません)。
  • Facebook.app >v28.0 & iOS8.3 を搭載したデバイスでバグが持続するようです
  • Facebook.app v28.0 & iOS8.3 は引き続き動作します
  • Facebook.app v29.0 & iOS8.2 は引き続き動作します
  • URL の共有もこのバグの影響を受けているようです

Facebook は更新のために偽のリリース ノートを入力するポリシーを持っているため、実際にこのバグに何か関係があるかどうかを判断するのは困難です。

共有機能は私のアプリの主な機能ではないので、iOS8.4 および/または Facebook.app v30.0 のリリースまで待ちます。

于 2015-05-07T14:16:28.550 に答える