2012-10-12 10 views
10

Mit SLComposeViewController erkenne ich merkwürdiges Verhalten beim Posten auf Facebook, wenn sowohl das Bild als auch die URL vorhanden sind. Insbesondere wenn Sie sowohl Bild- als auch URL haben, wird die URL in dem Körper der Facebook-Post im Hinblick auf die SLComposeViewController, unmittelbar nach den initialText wenn ich folgendes tun:Facebook SLComposeViewController URL wird im Text angezeigt, wenn sowohl URL als auch Bild vorhanden sind

SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; 

NSString *text = @"This is a test Facebook post with SLComposeViewController."; 
NSURL *url = [NSURL URLWithString:@"http://http://stackoverflow.com/questions/12503287/tutorial-for-slcomposeviewcontroller-sharing"]; 
UIImage *image = ...; 

[controller setInitialText:text]; 
[controller addURL:url]; 
[controller addImage:image]; 

[self presentViewController:controller animated:YES completion:nil]; 

Das offensichtlich ist ein Streit, weil die wenn die URL lang ist, wird der ursprüngliche Text aus dem sichtbaren Teil der Ansicht von SLComposeViewController geschoben und ich nur den letzten Teil der URL sehen:

wenn ich diesen Vorgang wiederholen, diesmal nicht Hinzufügen des Bildes zum Post, der Text der URL conven kommt im Körper gar nicht zum Vorschein (auch wenn es online richtig auftaucht).

enter image description here

Unterm Strich, nur wenn es ein Bild und und URL ist die URL im Körper der Post zeigen. Und ich sehe das gleiche Muster, wenn ich FBNativeDialogs verwende.

Gibt es eine Möglichkeit, dieses Verhalten mit SLComposeViewController zu stoppen, so dass ich Bild und URL mit dem Facebook-Post verbunden haben kann, ohne den Benutzer der langen, hässlichen URL der Website auszusetzen? Natürlich kann ich jede der nicht-SLComposeViewController Lösungen verwenden (z. B. meine eigene UI für das Verfassen des Facebook-Posts entwerfen, die veraltete Facebook-Version Feed Dialog usw. verwenden). Ich frage mich nur, ob ich eine offensichtliche SLComposeViewController Lösung übersehen habe.

Antwort

10

Am Ende habe ich auf die SLComposeViewController (sowie die FBNativeDialogs) aufgegeben. Sie bieten ein nettes, integriertes Feeling, aber da meine Posts sowohl Foto als auch URL enthalten, funktioniert das wirklich nicht. Darüber hinaus wurden die Beiträge nicht korrekt von meiner App zugewiesen.

Also, am Ende habe ich meine eigene Benutzeroberfläche geschrieben und verwende das Facebook SDK 3.1 FBRequestConnection wie beschrieben here. Ich denke, es ist ein wenig albern, dass wir alle unsere eigene Benutzeroberfläche erstellen müssen, weil die Schwächen in der nativen Benutzeroberfläche sind, aber es ist, was es ist.

-5
TWTweetComposeViewController *twitter = [[TWTweetComposeViewController alloc] init]; 
NSString *format = @"“%@” %@ /via @DesignSceneApp"; 
NSString *message = [NSString stringWithFormat:format, title, url] 
NSUInteger idx = title.length; 
while (![twitter setInitialText:message]) { 
    idx -= 5; 
    if (idx > 5) { 
     message = [NSString stringWithFormat:format, 
      [NSString stringWithFormat:@"%@…", [title substringToIndex:idx]], 
      url 
     ]; 
    } else { 
     // Give up on the title. 
     message = [NSString stringWithFormat:@"%@ /via @DesignSceneApp", url]; 
     [twitter setInitialText:message]; 
     break; 
    } 
} 

[self presentViewController:twitter animated:YES completion:nil]; 
+1

noch kein Fortschritt in der Codeformatierung?-1 als Anreiz, die Hilfe zu lesen :-) – kleopatra

+0

@Tamilarasan, ich sehe nicht, wie dieser Code das spezifische Problem löst, das sich nur beim Senden sowohl URL als auch und Bild in einzelnen Facebook-Post manifestiert. Sie verwenden weder Facebook noch senden Sie ein Bild. Sieht so aus, als ob du das Problem "Länge des Tweets" iterativ lösen willst, aber das ist hier nicht das Problem. Vielen Dank für Ihre Zeit. – Rob

+1

Formatieren Sie bitte Ihren Code und lesen Sie die Frage vor COPY & PASTE. –

6

Der neue Dialog scheint so konzipiert zu sein, dass Sie die meisten Daten als Tags auf der Website bereitstellen, auf die die angegebenen Links verweisen. Wie folgt aus:

Titel:

<title>TITLE</title> 

Beschreibung:

<meta name="description" content="DESCRIPTION"> 

Image:

<meta property="og:image" content="IMAGE_URL"> 

App-ID:

<meta property="fb:app_id" content="APP_ID"> 

Auf diese Weise müssen Sie nur den ursprünglichen Text und eine URL angeben. Sie können sehen, wie die offizielle Youtube-App Facebook-Sharing für ein Beispiel tut.

+0

es funktioniert nicht und Ytbe auch! schaue sorgfältig nach –

Verwandte Themen