2013-02-03 95 views
2

我嘗試與NSSharingServicePicker共享一個網頁網址到Facebook,但它在我的FB牆上不是作爲網頁網址(與描述等),而是像鏈接一樣。分享到Facebook的網頁網址

我的代碼很簡單。

- (IBAction)share:(id)sender 
{ 
    NSURL* url = [NSURL URLWithString:@"http://itunes.apple.com/us/app/travel-route-planner/id504536611"]; 

    NSSharingServicePicker *sharingServicePicker = [[NSSharingServicePicker alloc] initWithItems:[NSArray arrayWithObjects:url, nil]]; 
    sharingServicePicker.delegate = self; 

    [sharingServicePicker showRelativeToRect:[shareButton bounds] 
             ofView:shareButton 
           preferredEdge:NSMinYEdge]; 
} 

我知道這可以做到。
Safari以我需要的方式共享網頁。

+0

您是否嘗試過包括圖像? Safari始終包含您分享的網站的縮略圖。也許這改變了什麼?我只通過Facebook SDK分享給Facebook。如果我沒有記錯,什麼改變了共享的方式。那有意義嗎? –

+0

沒有幫助。通常圖像和描述是通過Graph API從網頁獲取的。 – Remizorrr

+0

你有沒有嘗試傳遞的URL作爲NSString而不是NSURL? – Alexandru

回答

0

我在Apple Dev論壇上找到了答案。

您需要添加圖像使用以下方法NSSharingServiceDelegate到

NSURL
- (NSRect) sharingService: (NSSharingService *) sharingService 
sourceFrameOnScreenForShareItem: (id<NSPasteboardWriting>) item 
{ 
    if([item isKindOfClass: [NSURL class]]) 
    { 
     //return a rect from where the image will fly 
     return NSZeroRect; 
    } 

    return NSZeroRect; 
} 

- (NSImage *) sharingService: (NSSharingService *) sharingService 
transitionImageForShareItem: (id <NSPasteboardWriting>) item 
       contentRect: (NSRect *) contentRect 
{ 
    if([item isKindOfClass: [NSURL class]]) 
    { 

     return [NSImage imageNamed:@"image.png"]; 
    } 

    return nil; 
} 

不要忘記設置委託爲您NSSharingService

- (id <NSSharingServiceDelegate>)sharingServicePicker:(NSSharingServicePicker *)sharingServicePicker delegateForSharingService:(NSSharingService *)sharingService 
{ 
    return self; 
} 
0

我看了一下您試圖分享的網站上的源代碼,並通過Facebook Object Debugger運行它。當談到定義的協議時,Facebook非常挑剔,所以我建議您將URL從http://更改爲https://,因爲安全URL是iTunes決定設置爲其og:url屬性的安全URL。請參閱here

+0

沒有幫助,對不起,我在Safari網頁上看到的圖像是共享的,在消息文本中沒有url,但在我的情況下,網頁url始終是消息文本。 – Remizorrr