【问题标题】:Reward user after successful sharing on social media on Android?在安卓社交媒体上成功分享后奖励用户?
【发布时间】:2017-10-29 13:19:15
【问题描述】:

我想知道在我的应用中成功在任何社交媒体(Facebook、Twitter , Google+ 等)例如 Twitter SDK 中是否有类似的东西?

换句话说,我怎么知道我的应用已成功分享?

我已阅读this 的答案,但没有帮助。

【问题讨论】:

  • 我不认为 fb、twitter 有这样的东西,但是一旦内容在 fb 上共享,你就可以处理了。
  • Facebook 明确禁止您以任何方式奖励用户分享。
  • @CBroe 真的吗?你能提供一个来源吗?
  • developers.facebook.com/policy#properuse, 4.5: "仅激励用户登录您的应用、在您的应用页面上输入促销信息或在某个地方签到。不要激励其他操作." 更深入的解释:developers.facebook.com/docs/apps/examples-platform-policy-4.5
  • @CBroe 好的,忘记 Facebook。其他社交媒体呢?谢谢。

标签: java android facebook twitter social-networking


【解决方案1】:
  1. 对于 Twitter,您可以使用 Twitter Kit Native Composer 分享一条推文,这基本上是您开始的一项活动

    startActivity(intent);
    

    稍后 twitter 会发出一个广播,其中包含分享的结果,显示它是否成功。更多信息在这里:https://dev.twitter.com/twitterkit/android/compose-tweets

  2. 对于Facebook,您也可以获得分享状态,当您显示分享对话框时,您可以提供一个回调,通知您分享成功。

    public class MainActivity extends FragmentActivity {
        CallbackManager callbackManager;
        ShareDialog shareDialog;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            callbackManager = CallbackManager.Factory.create();
            shareDialog = new ShareDialog(this);
            shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { 
                // Here you'll get sharing status 
            });
    }
    

    更多信息:https://developers.facebook.com/docs/sharing/android?locale=en_US,查看Share Dialog 段落。

  3. 对于 LinkedIn,您可以从 their sdk 获得类似于处理网络请求的结果。

  4. 对于 Google+,您应该检查启动活动的结果,对于此文档 developers.google.com/+/mobile/android/share,您应该调用 startActivityForResult 然后您很可能将得到结果作为活动结果,Activity.RESULT_OKActivity_RESULT_CANCELED。更多信息在这里:https://developer.android.com/training/basics/intents/result.html

  5. 对于 Reddit,您可以使用他们的 REST api。我发现你可以写一个帖子,例如:https://reddit.com/dev/api/#POST_api_compose,它会以成功或失败来回应。

  6. Fow WhatsApp环聊TelegramViberLine > 和其他信使,您应该使用原生android 方式来share,但不幸的是并没有告诉您结果。

【讨论】:

  • 好答案。你对其他社交网络了解吗? (WhatsApp、Google Hangouts 等)
  • 或者是一种通用的方式来了解我的应用是否已成功共享?
  • 不幸的是,大多数信使使用基于 Intents (developer.android.com/training/sharing/send.html) 的 Android 共享系统,即 whatsapp 在这里描述了它的共享 faq.whatsapp.com/android/28000012。而且这个系统不允许你从你分享的应用中获得反馈。
  • 那么,Twitter 和 Facebook 是唯一支持这一点的主要社交网络吗?
  • 你也可以从LinkedIn获得结果,他们通过网络请求https://developer.linkedin.com/docs/share-on-linkedin#methods来实现,但我没有听说过whatsapp、hangouts、telegram或instagram有任何机制
【解决方案2】:

推特

来自Twitter Docs

在尝试发布推文后,TweetUploadService 会广播一个 Intent,其操作值 com.twitter.sdk.android.tweetcomposer.UPLOAD_SUCCESS 表示成功,com.twitter.sdk.android.tweetcomposer.UPLOAD_FAILURE 表示失败。成功后,Intent 将包含一个额外值,其中包含已创建推文的 Tweet ID。失败时,Intent 将包含原始 Intent 的副本,可用于重试上传。

您可以创建一个BroadcastReceiver 来接收这些 Intent。

对于 WhatsApp

没有办法。因为 WhatsApp Intent 只允许您打开 whatsapp。它不会触发任何回调动作。

对于 Facebook

Facebook 允许您在应用中注册回调管理器。

示例代码

public class MainActivity extends FragmentActivity {
    CallbackManager callbackManager;
    ShareDialog shareDialog;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        callbackManager = CallbackManager.Factory.create();
        shareDialog = new ShareDialog(this);
        // this part is optional
        shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { ... });
    }

来源:Facebook Documentation

环聊

Google+ Hangouts API Documentation,我找不到这样的东西。

旁注

即时消息似乎不会在共享时启动回调操作。

但一些社交媒体应用可以。

【讨论】:

  • 好答案。 Google+ 呢?
  • Google+ 不支持分享对话框的回调。 @程序员
【解决方案3】:

对于 WhatsApp

如上所述,Whatsapp 没有这样的回调,但您可以在这里做些什么。

要求用户与文本一起共享图像,然后您可以通过检查 Whatsapp/Media/Whatsapp Images/Sent 文件夹中的已发送媒体文件夹来验证。

但是你需要存储权限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多