2013-11-04 2 views
8

저는 기사 제목과 기사 URL을 트위터에 게시하고 트윗 끝에 애플 리케이션 이름을 추가하려고합니다. 그래서SLComposeViewController를 사용하여 Twitter에 게시 할 수없는 이유는 무엇입니까?

같은 일이 첨부 된 URL "어떻게 (@appname를 통해) 선인장을 재배하는"

내가 확인하기 위해 제목과 URL의 길이의 균형을하는 방법을 알아내는 데 문제가 있었다 짹짹이 140자를 초과하지 않는다. 따라서 URL이 길면 기사 제목 일부를 잘라내어 140 자 미만이 될 수 있습니다. Twitter's guidelines for SLComposeViewController 보면

그들은이 부분 주 : 초기 내용을 설정하는 방법은 부울 값으로 반응한다는

참고; 이것에 의해, 개발자는, 초기화 중의 짹짹 본체의 현재의 문자 수에 대해 걱정할 필요가 없습니다. 메서드가 YES를 반환하면 콘텐츠를 추가 할 충분한 공간이 있습니다. 메서드가 NO를 반환하면 추가하려고 시도한 내용이 140 자 이상의 짹짹으로 표시됩니다. 문자 계수를위한 논리는 t.co URL 랩핑에 필요한 현재 문자 수를 반영합니다.

if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) { 
    SLComposeViewController *twitterViewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; 
    [twitterViewController addURL:[NSURL URLWithString:self.article.url]]; 

    NSString *titleToShare = self.article.title; 
    while ([twitterViewController setInitialText:[NSString stringWithFormat:@"%@ (via @SyllableApp)", titleToShare]]) { 
     titleToShare = [titleToShare substringToIndex:titleToShare.length - 1]; 
    } 

    [self presentViewController:twitterViewController animated:YES completion:nil]; 
} 

기본적으로 (.은 "코드 예제"섹션에서)

을 감안할 때, 나는 URL 길이와 기사 길이 트윗을 구축하고 균형을 다음과 같은 코드를 작성 URL을 추가 한 다음 YES을 반환 할 때까지 setInitialText: 메서드를 반복하여 나머지 트윗을 구성하고 필요한 길이에 더 가까워 지도록 NO을 반환 할 때마다 제목의 길이를 1 씩 줄입니다.

그렇지만 결코 그렇습니다! 내가 알았을 때조차도. 제목이 105 자이고 URL이 55이고 앱 크레딧이 더해져 잠재적으로 140자를 넘을 수있는 한 가지 기사를 사용하고있었습니다. 따라서 이론적으로는 제목을 줄이고 잘 추가 할 수 있어야하지만 결코 발생하지 않습니다.

무슨 일 이니? SLComposeViewController으로 링크 연결을 수행하려면 어떻게해야합니까?

+0

시뮬레이터와 iPhone 5S에서 샘플 프로젝트를 실행했고 두 경우 모두 (애니메이션이 실행되는 동안) Xcode가 0 %의 CPU를보고했습니다. 어쩌면 뭔가를 다시 시작해야 할 수도 있습니다 (Xcode, 장치, 내선)? –

+0

버그입니다 : http://openradar.appspot.com/14273967 –

답변

2

while ([twitterViewController setInitialText:[NSString stringWithFormat:@"%@ (via @SyllableApp)", titleToShare]]) => while (![twitterViewController setInitialText:[NSString stringWithFormat:@"%@ (via @SyllableApp)", titleToShare]])

은있다! 상태가 누락되면 크기가 너무 길지 않아도 맞을 때 게시물이 짧아집니다.)

+0

그 중 하나가 작동하지 않습니다. –

+0

루프 앞에서'twitterViewController' 나'titleToShare'도 nil이 아닌지 확인하십시오. – imihaly

+0

오류가 있음 : http://openradar.appspot.com/14273967 –

1

이 접근법의 문제점은 iOS6에서만 작동한다는 것입니다.

SLComposeViewController *social = [[SLComposeViewController alloc] init]; 
NSString *stringToShare = @""; 
for (int i = 0; i < 150; i++) 
{ 
    stringToShare = [stringToShare stringByAppendingString:@"x"]; 
} 
NSLog(@"%@",[social setInitialText:stringToShare][email protected]"YES":@"NO"); 

은 iOS6 (NO) 및 iOS7 (YES)에서 다른 결과를 산출합니다. 이 문제에 대한 대답은 아마 가치 중 하나 iOS6의 7에 다른 접근 방식을 가지고, 또는 SLComposeViewController 방법을 사용하지 않고 길이를 확인 SLComposeViewController

// Sets the initial text to be posted. Returns NO if the sheet has already been 
// presented to the user. On iOS 6.x, this returns NO if the specified text 
// will not fit within the character space currently available; on iOS 7.0 and 
// later, you may supply text with a length greater than the service supports, 
// and the sheet will allow the user to edit it accordingly. 
- (BOOL)setInitialText:(NSString *)text; 

의 문서에서 비롯됩니다.

0

imihaly가 말했듯이, 당신은 "!"을 그리워했습니다.

140 자 수는 URL을 포함하지 않고 제목의 한도입니다. 제목이 140 자 미만인 105 자 길이이므로이 메서드는 YES를 반환해야합니다. : 링크가 포함 된 열려있는 버그가 있습니다

0

는가 제대로 (// 10469407 레이더) 계산 안한다 길이. 이것은 관련이있을 수 있습니다. URL 단축기가 사용되고 있는지 확인하기 위해 링크가 포함 된 트윗을 전송 해 볼 수 있습니다 (나는 t.co를 사용하고 있다고 상상하지만 잘못된 것일 수 있습니다).

관련 문제