在 Android 社交媒体上成功分享后奖励用户?

Reward user after successful sharing on social media on Android?

我想知道如何在我的应用程序中 成功地 共享(从我的应用程序内部使用按钮)到任何社交媒体(Facebook, Twitter, Google+ 等)例如Twitter SDK中是否有类似的东西?

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

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

  1. 对于 Twitter,您可以使用 Twitter Kit Native Composer 分享一条推文,该推文基本上是一条 activity,您以 [=22] 开头=]

    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+ 你应该检查启动的结果 activity,关于这个文档 developers.google.com/ +/mobile/android/share 您应该调用 startActivityForResult,然后您很可能会得到结果 activity、Activity.RESULT_OKActivity_RESULT_CANCELED。更多信息在这里:https://developer.android.com/training/basics/intents/result.html

  5. 对于 Reddit,您可以使用他们的 REST api。我发现您可以编写一个 post,例如:https://reddit.com/dev/api/#POST_api_compose,它将以成功或失败作为响应。

  6. Fow WhatsApp, Hangouts, Telegram, ViberLine其他信使你应该使用本地android方式share 不幸的是没有告诉你结果。

对于推特

来自Twitter Docs

After attempting to post a Tweet, the TweetUploadService broadcasts an Intent with the action value com.twitter.sdk.android.tweetcomposer.UPLOAD_SUCCESS for success or com.twitter.sdk.android.tweetcomposer.UPLOAD_FAILURE for failure. On success, the Intent will contain an extra value with the Tweet ID of the created Tweet. On failure, the Intent will contain a copy of the original intent which could be used to retry the upload.

您可以创建一个 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中,我找不到这样的东西。

旁注

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

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

对于 WhatsApp

如上所述,Whatsapp 没有此类回调,但您可以在此处执行操作。

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

但是您需要为此获得存储权限。