2

我正在开发建议应用程序的应用程序。如果用户使用我的应用成功安装了应用,那么他会在我的应用中获得奖励。我正在获取有关接收器的“com.android.vending.INSTALL_REFERRER”操作的信息,它提供了这个但没有成功......
所以请帮助我获得一些完整的例子或其他建议......

这是我的代码...

按钮点击事件

btnInstallApp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent goToMarket = new Intent(Intent.ACTION_VIEW)
                    .setData(Uri.parse("market://details?id=com.idea.backup.smscontacts&referrer=tecksky"));
            startActivity(goToMarket);
        }
    });

清单.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tecksky.referrerdemo">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".activity.MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <receiver
        android:name=".receiver.ReferrerCatcher"
        android:exported="true">
        <intent-filter>
            <action android:name="com.android.vending.INSTALL_REFERRER"></action>
        </intent-filter>
    </receiver>
</application>

</manifest>

ReferrerCatcher.java

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");
    }
    Log.e("REFERRER : ", referrer);
   }
}
4

1 回答 1

0

嘿,看看它是如何工作的,我已经在我的应用程序中实现了这个,并且非常适合我,所以我向你发布推荐代码:

创建单独的类以接收参考:

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import com.google.android.gms.analytics.CampaignTrackingReceiver;

public class CustomReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
          new CampaignTrackingReceiver().onReceive(context, intent);
          Bundle b= intent.getExtras();
             String referrerString = b.getString("referrer");
            // Log.e("bundle", "bundle= " + referrerString+ " " + referrerString.substring(11, referrerString.length()));
             SharedPrefManager.setPrefVal(context, Constants.REFERRAL, referrerString.substring(11, referrerString.length()));              

    }
}

此类将收到您必须保存在某处的推荐,就像我将其保存在 SharedPrefrence 中一样。当用户从 Play 商店安装应用程序时,将收到此广播,"referrer"您将获得信息,即哪个用户向该用户传递了下载应用程序的链接,然后从该推荐人密钥中,您可以为推荐您的应用程序的用户提供好处。

在清单文件中添加接收者标签

  <receiver
            android:name="gcm.CustomReceiver"
            android:exported="true">
            <intent-filter>
                <action android:name="com.android.vending.INSTALL_REFERRER" />
            </intent-filter>
        </receiver>

从后端,您将从服务器端获得特定用户的链接,您将点击该链接以播放商店,然后类似于

https://play.google.com/store/apps/details?id=com.example.app&referrer=utm_source=123456ref

基本上,在您的接收器类中,您选择了这个 utm_source,当用户在您的应用程序中注册时,您必须将其发送到服务器端。这意味着它会让知道从哪个引用生成了哪个 id。

希望这对您有所帮助。试试这个,让我知道。

于 2016-09-17T10:08:01.063 回答