2016-09-17 105 views
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); 
     } 
    }); 

的Manifest.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); 
    } 
} 
+0

你说的“我正在获取信息”和“但没有成功”是什么意思?是否调用ReferrerCatcher.onReceive? – gus27

回答

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中。当用户将从游戏商店安装应用程序并在"referrer"中获得此广播时,您将获得哪些用户通过此用户的链接以下载应用程序的链接,然后从该引荐人密钥中获得有关引用您的应用程序的用户的好处。

在manifest文件中添加接收器标签

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

从后端,你会得到从服务器端的链接,你会打Play商店,然后像

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

特定用户

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

希望这可以帮助你。试试这个,让我知道。

+0

你好,我试图使用你的解决方案,但是一旦应用程序启动,我就无法读取引用字符串。我使用'PreferenceManager.getDefaultSharedPreferences()'。什么是您使用的'SharedPrefManager'? – 2ndGAB

+0

此处sharedprefmanager是用于在共享首选项中保存信息的自定义类。你可以自己写。 –

+0

好的,我在其他地方看到它。这里的关键是不要使用''getDefaultSharedPreferences()'''''''''''''''能够在应用程序中读回它,因为它指向与应用程序不同的上下文('restrictedContext')。 – 2ndGAB

相关问题