如何在Titanium的Facebook模块对话框中添加图片?在Titanium的示例中,对话框中的图片属性是网站图片的链接:
var data =
{
link : "http://www.appcelerator.com",
name : "Appcelerator Titanium Mobile",
message : "Checkout this cool open source project for creating mobile apps",
caption : "Appcelerator Titanium Mobile",
picture : "http://developer.appcelerator.com/assets/img/DEV_titmobile_image.png",
description : "You've got the ideas, now you've got the power. Titanium translates " +
"your hard won web skills into native applications..."
};
fb.dialog("feed", data, function(e)
{
if(e.success && e.result)
{
alert("Success! New Post ID: " + e.result);
}
else
{
if(e.error)
{
alert(e.error);
}
else
{
alert("User canceled dialog.");
}
}
});
但是,如果您想使用本地图片而不是通过此类网站的链接,该怎么办?
var data =
{
link: "http://play.google.com/",
name: "Android app's name",
picture: "file:///data/data/com.appid/app_appdata/directory/name-of-image.jpg"
};
如果我使用上面的代码,我会得到图片属性格式错误。有关视觉参考,请参阅此图片:http://postimg.org/image/wjefdlalb/
我尝试过像这样使用FileSystem:
function getFile()
{
var imageFileToPost;
var imageFile = Ti.Filesystem.getFile("file:///data/data/com.appid/app_appdata/directory/name-of-image.jpg");
if (imageFile.exists())
{
console.log("exists");
imageFileToPost = imageFile.read();
}
return imageFileToPost;
}
var data =
{
link: "http://play.google.com/",
name: "Android app's name",
picture: getFile()
};
帖子很成功,没有错误,但图片没有在Facebook上发布。
注意:我会使用图表,但我需要使用'publish_actions'这样的权限,这意味着我必须让Facebook审核该应用,但他们不喜欢预填充消息,即使用户也是如此无论如何都可以编辑消息。那么这真的只是Facebook模块对话框的格式化问题,还是只需要图片的网址?如果这是一个格式问题,有人可以告诉我如何正确格式化,因为我真的需要使用本地的图片,而不是网站上的图片吗?
答案 0 :(得分:0)
答案可能有点晚,但最近我遇到了同样的问题。
目前版本的Facebook模块似乎无法创建一个共享本地图像的对话框。
因为我还需要为我的某个应用程序使用此功能,所以我分叉了模块(https://github.com/dthulke/ti.facebook)并添加了一个方法presentPhotoShareDialog
,它将图像blob作为参数。不幸的是,它只适用于安装原生Facebook应用程序。
示例:
if (fb.getCanPresentShareDialog()) {
fb.presentPhotoShareDialog({
imageBlob : view.toImage()
});
}