我正在使用facebook图api,我发出这个命令
/V2.0/me/home
它返回类似于:
"id": "xxxxxxxxxxxxxxxxxxxxxx",
"from": {
"id": "xxxxxxxxxxxxxxxxx",
"name": "Roger"
},
"story": "Roger shared a link.",
"picture": "https://fbexternal-a.akamaihd.net/safe_image.php?d=AQB2VeutsxS6ht3i&w=154&h=154&url=https%3A%2F%2Fwww.facebook.com%2Fads%2Fimage%2F%3Fd%3DAQIuWnred6mG7Ti280buWL8uhE00-W2H0Eom1PzNa3Av0x3y7JieMPqLmxAFYsCRKh0Zr8u_PyWO1lFbTknlj_DaksBoFiaD8d2yIWLOGNYKie1w9Kff6vyyElxnfrlHH7uSRhwycKNakg7szgWtBBwC",
"link": "http://xxxxxx.com",
Run Code Online (Sandbox Code Playgroud)
问题在于上面的"图片"标签,其中图片的网址是在之后给出的.
如果您将该网址粘贴到浏览器中,则会获得一个小缩略图大小的图像,但在真实的Facebook页面上,它会显示相同图像的大得多的高分辨率版本.
这对于它发回的所有图片网址都是一样的.有些网址以_s.jpg结尾,我可以将其更改为_n.jpg以使其成为更大的图像,但这对于最后没有_s.jpg的网址不起作用,就像上面的网址一样.
任何人都知道要使用的facebook-graph-api命令,以便facebook发送指向较大的高分辨率图像的url而不是发回指向所有缩略图的url?或者如何更改网址以使其指向大的高分辨率图像?
谢谢
我有一个iPad应用程序,我想这样做
-(IBAction) clicked {
image=download(@"http://....."); // this is on the main thread
}
Run Code Online (Sandbox Code Playgroud)
下载功能将调用一大堆非阻塞函数从Internet下载文件,但下载本身不应该返回,直到下载图像.
当程序在上面的image = download(...)行等待下载时,我希望UI能够仍然运行,例如能够滚动UITableView,单击另一个按钮等.
所以我在下载函数中使用的是RunLoop
-(void) download:(NSString *)url
{
BOOL stillDownloading=TRUE;
while(stillDownloading) {
stillDownloading=downloadAFwBytes(...);
CFRunLoopRunInMode(kCFRunLoopCommonModes, 0, YES);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为CFRunLoopRunInMode函数将继续抽取UI消息,触摸,滚动主UI线程,以便UI继续工作,直到下载完成后才冻结,但由于某种原因,它只能工作很短的时间,最终用户界面冻结.
你知道为什么,或者如何解决?
下载函数在程序中随处调用,期望它等待下载,因此我暂时无法将其更改为非阻塞.