Phonegap/cordova 社交分享插件,重复推文问题
Posted
技术标签:
【中文标题】Phonegap/cordova 社交分享插件,重复推文问题【英文标题】:Phonegap/cordova Social sharing plugin , Duplicate tweet issue 【发布时间】:2015-08-11 07:01:14 【问题描述】:我正在使用社交分享插件将消息和图片从我的移动应用程序分享到 Facebook 和 twitter, 如果共享成功,应用程序将显示“共享成功”的警报,如果插件显示任何错误消息,应用程序将显示“共享已取消”。 对于 facebook,它就像一个魅力,但在 twitter 中存在一个问题。它适用于所有场景,除了重复推文(人多次分享同一推文)两个警报都被触发,因为插件的所有条件都满足(互联网连接、用户身份验证、有效消息),但手机中的 twitter 应用程序延迟抛出“重复推文”错误。在触发警报之前,请在这里的任何人帮助我找到该错误消息。
function shareViaTwitter(id, message, image, url)
canShareViaTwitter();
message = message.replace(/<br *\/?>/gi,'\n');
var successmessage = window.localStorage.getItem('canshareTwitsuccess');
var errormessage = window.localStorage.getItem('canshareTwiterror');
if(errormessage != '' && errormessage != 'null' && errormessage != null)
navigator.app.loadUrl('https://play.google.com/store/apps/details?id=com.twitter.android&hl=en', openExternal:true );
reloadPage();
else
if(navigator.onLine)
var isAndroid = /android/i.test(navigator.userAgent.toLowerCase());
if(isAndroid)
message = (message) ? message : null;
image = (image) ? image : null;
url = (url) ? url : null;
window.plugins.socialsharing.shareViaTwitter(message, image, url, function(msg), function(msg));
$("#sharingText").html("Shared Successfully");
$('#sharing-sucess-trigger').trigger('click');
else
$("#sharingText").html("Shared Failed! \nNo Network Connection");
$('#sharing-sucess-trigger').trigger('click');
reloadPage();
function canShareViaFacebook()
//alert("canshare")
window.plugins.socialsharing.canShareVia('com.facebook.katana', 'msg', null, null, null, function(fbsuccess)window.localStorage.setItem("canshareFbsuccess", fbsuccess);, function(fberror)window.localStorage.setItem("canshareFberror", fberror););
function canShareViaTwitter()
//alert("canshare")
window.plugins.socialsharing.canShareVia('twitter', 'msg', null, null, null, function(twitsuccess)window.localStorage.setItem("canshareTwitsuccess", twitsuccess);, function(twiterror)window.localStorage.setItem("canshareTwiterror", twiterror););
【问题讨论】:
我最近通过这个博客cases.azoft.com/facebook-twitter-integration发现twitter返回的错误无法由客户端处理,还有其他解决方案吗? 【参考方案1】:这段代码真的很奇怪。如果您与以下人员分享推文:
socialsharing.shareViaTwitter(message, file, url, successCallback, errorCallback)
如果你想告诉用户推文失败,你会使用 errorCallback 来提醒用户推文失败。
function errorCallback(msg)
alert(msg);
--附加代码--
function shareViaTwitter(id, message, image, url)
message = message.replace(/<br *\/?>/gi,'\n');
canShareViaTwitter(function()
if(navigator.onLine)
var isAndroid = /android/i.test(navigator.userAgent.toLowerCase());
if(isAndroid)
message = (message) ? message : null;
image = (image) ? image : null;
url = (url) ? url : null;
window.plugins.socialsharing.shareViaTwitter(message, image, url, function(msg), function(msg));
$("#sharingText").html("Shared Successfully");
$('#sharing-sucess-trigger').trigger('click');
else
$("#sharingText").html("Shared Failed! \nNo Network Connection");
$('#sharing-sucess-trigger').trigger('click');
//why?
reloadPage();
,
function()
navigator.app.loadUrl('https://play.google.com/store/apps/details?id=com.twitter.android&hl=en', openExternal:true );
reloadPage();
);
function canShareViaTwitter(successCallback, errorCallback)
//alert("canshare")
window.plugins.socialsharing.canShareVia('twitter', 'msg', null, null, null, function(twitsuccess)window.localStorage.setItem("canshareTwitsuccess", twitsuccess);successCallback();, function(twiterror)window.localStorage.setItem("canshareTwiterror", twiterror);errorCallback());
【讨论】:
忽略我们用于会话处理和类似内容的本地存储部分,问题是“推特永远不会允许类似的推文” 两个请求都是异步的,因此当您调用 canShareVia 时,您实际上并没有检查错误,因为错误检查代码将在设置任何错误消息之前运行。 是的没错,但是canShareVia在进入twitter应用后实际上并没有检查错误,这个错误是由于twitter的垃圾邮件预防机制,所以它不会被canShareVia捕获 那么你为什么不能直接调用shareViaTwitter呢?为什么需要 canShareVia?我不认为这是您在致电之前必须检查的人之一(基于此处的文档:github.com/EddyVerbruggen/SocialSharing-PhoneGap-Plugin)以上是关于Phonegap/cordova 社交分享插件,重复推文问题的主要内容,如果未能解决你的问题,请参考以下文章
适用于 iOS 的 Phonegap/Cordova 日历插件无响应
重命名后新的 PhoneGap / Cordova iOS 项目将无法运行
Phonegap (Cordova) 2.7.0 + Mapkit 插件 + 入门
Phonegap/Cordova - 套接字插件最终得到: undefined is not a function in cordova.js