2015-04-27 75 views
46

請問,如果我犯了錯誤,你能告訴我嗎?iOS:如何在社交網絡上分享文字和圖片?

NSString *sharedMsg=[NSString stringWithFormat:@"Hello world"]; 
UIImage* sharedImg=[UIImage imageNamed:@"image"]; 
NSArray* sharedObjects=[NSArray arrayWithObjects:sharedMsg, sharedImg, nil]; 
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] 
       initWithActivityItems:sharedObjects applicationActivities:nil]; 
activityViewController.popoverPresentationController.sourceView = self.view; 
[self presentViewController:activityViewController animated:YES completion:nil]; 

在運行時,當我選擇Facebook的圖標文本丟失,圖像正確顯示。
我的xcode是6.3.1,在iPad上測試過。

+0

https://iosdevcenters.blogspot.com/2017/08/how-to-share-content-with.html –

回答

93

似乎Facebook應用程序的最近更新已將內置的Facebook共享活動替換爲忽略狀態文本的活動 - 如果您從設備中刪除Facebook應用程序,則文本將使用您擁有的代碼顯示。如果您安裝了Facebook應用程序,您將獲得圖像,URL但不是文本

Facebook的政策不允許您預先填充狀態消息並要求所有內容都是用戶生成的 - 但我瞭解其背後的意圖,我個人認爲這在很多情況下都很愚蠢 - 例如在我的遊戲中,我想預先填充用戶的分數,但現在我不能,所以用戶會看到一個空的對話框。我可能會簡單地刪除Facebook共享選項,因爲現在沒有人會使用它。

response從Facebook確認行爲是設計

+10

你是對的,一場毫無意義的選擇......用戶可以簡單地編輯和更改它發送到他的個人資料之前。這樣Facebook將失去很多股份。 – user3290180

+0

感謝您指出這一點,它讓我瘋狂! Facebook真是一個愚蠢的舉動。 – Ash

+0

只有#hashtag正在爲我工​​作。純文本和網址不再有效? –

0
NSString* [email protected]"Hello world"; 
NSURL *myWebsite = [NSURL URLWithString:@"http://www.website.com/"]; 
// UIImage * myImage =[UIImage imageNamed:@"myImage.png"]; 
NSArray* [email protected][text,myWebsite]; 
UIActivityViewController * activityViewController=[[UIActivityViewController alloc]initWithActivityItems:sharedObjects applicationActivities:nil]; 

activityViewController.popoverPresentationController.sourceView = self.view; 
[self presentViewController:activityViewController animated:YES completion:nil]; 
+0

你能夠添加一些上下文到這個答案嗎? 「GooglePlus」和「已分發」對象來自哪裏?您是否安裝了最新的Facebook應用程序來測試此代碼? – Paulw11

+0

是的,我測試過,GooglePlus和UIActivity的自定義子類 –

+0

你還沒有顯示「結論」的代碼 - 可能這是使用Facebook SDK進行共享的一些實現。使用Facebook SDK需要與Facebook條款達成協議,禁止文本的預先填充。 – Paulw11

8

這裏是斯威夫特的答案。它可能無助於你的問題,但它可能有助於尋找這個頭銜的人。只需創建一個按鈕,它就是行動。並像這樣安裝按鈕的動作。

注意:您必須通過設置登錄您的Facebook或Twitter。然後這樣做。

@IBAction func onShareTouched(sender: AnyObject) { 

    print("share") 

    let myShare = "My beautiful photo! <3 <3" 
    let image: UIImage = UIImage(named: "yourImageNameHere") 

    let shareVC: UIActivityViewController = UIActivityViewController(activityItems: [(image), myShare], applicationActivities: nil) 
    self.presentViewController(shareVC, animated: true, completion: nil) 

    }