Android 饼干(邀请奖励)

Android Cookies (Reward for Invites)

我正在尝试整合 'reward for invites' 逻辑。为此,我要做的是为每个用户生成一个唯一的 URl。当朋友点击 URL 时,他会被定向到一个页面,然后是 playstore。在页面上,具有唯一 ID 的 cookie 存储在设备上。

注意 -(用户可以在任何浏览器中打开 link)

当设备上的应用程序启动时,我获取使用上面保存的 cookie,如果可用,将其发送到服务器,以便轻松识别和奖励用户。

这看起来很简单,但是我卡在了必须读取 cookie 并提取 id 的位置。

我读到 this 说这是不可能的。 :( 我也试过下面的

List<Cookie> cookies = new DefaultHttpClient().getCookieStore()
            .getCookies();
    if (cookies.isEmpty()) {
        System.out.println("None Cookies");
    } else {
        for (int i = 0; i < cookies.size(); i++) {
            System.out.println("Cookie - " + cookies.get(i).toString());
        }
    }

但运气不好。我不断收到 "None Cookies".

我的问题:

  1. 是否可以读取创建的cookie?如果是怎么办?
  2. 如果没有,关于如何实现上述功能的任何替代方案?

感谢您的光临。

有趣的概念。

至于 #1,您将违反 Android 默认安全协议,应用无法读取其他应用的私有数据。这包括 Android 上的所有浏览器,它们的 cookie 彼此隔离,包括您的应用程序。

对于#2,为什么不在上面放一个简短的密码短语(这很容易记住。从 gfycat url 代中得到启发,尽管可能会尝试限制范围和字数)在重定向到 Play 商店之前,单个 "success" 或 "rewards earned" 页面? (不确定您是否可以将 Play 商店页面嵌入 iframe 标记中)。

更好的是,如果 url 指向您的应用程序登录站点,但切换页面上的某些元素以显示密码并可能使下载按钮更具吸引力(即使它只是链接到 Play 商店页)。

然后用户可以使用简短的唯一密码来解锁应用程序中的奖励。

我确实看到你的想法很新颖,但这当然只是一个建议,因为你无法绕过安全策略。

我找到了一个替代我的上述要求的方法 Campaign Measurement.

除了整合 google-play-services_lib.

之外,还可以通过 3 个简单的步骤完成
  1. 创建您的邀请URL。

    这将是 play-store url + 您的唯一代码。例如我的代码是 ABCDEX52362XYZ 然后 url 看起来像 https://play.google.com/store/apps/details?id=com.app.yourappspackagename&referrer=utm_source%3DABCDEX52362XYZ

&referrer=utm_source%3DABCDEX52362XYZ 是这里的重要关键。有关创建此 URL 的更多详细信息是 here

Google 说 -

当您的应用程序是从 Google Play 商店下载时,Play 商店应用程序会在安装期间向您的应用程序广播 INTENT_REFERRER。此 Intent 包含 link 的 referrer 参数值,用于到达您应用的 Google Play 商店页面(如果存在)。

  1. 将 Google 分析接收器添加到您的 AndroidManifest.xml 文件

    <receiver android:name="com.app.receiver.ReferrerCatcher" android:exported="true">
        <intent-filter>
          <action android:name="com.android.vending.INSTALL_REFERRER" />
        </intent-filter>
    </receiver>
    
  2. 创建 ReferrerCatcher 广播接收器来捕获邀请码。

     public class ReferrerCatcher extends BroadcastReceiver {
    
     private static String referrer = "";
    
     @Override
     public void onReceive(Context context, Intent intent) {            
    
        referrer = "";
        Bundle extras = intent.getExtras();
        if (extras != null) {
            referrer = extras.getString("referrer");
            if (referrer != null) {
    
                String invitationCode = referrer.replace("utm_source=",""); 
    
                //referrer is your code plus the google keys, so you need to handle it          
    
            }
        }
    
      }
    
    }
    

希望这对您有所帮助。快乐的编码。 :)