2013-02-03 177 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