怎么在直播软件源码中开发邀请奖励功能的

阅读: 评论:0

怎么在直播软件源码中开发邀请奖励功能的

怎么在直播软件源码中开发邀请奖励功能的

邀请奖励功能是直播软件源码中非常常见的功能之一,通过用户自身的社交关系网,为平台实现推广引流作用,今天就来讲讲,邀请功能的实现方式,最终效果图如下图所示:

一、直播软件源码中邀请功能的实现机制
用户在个人中心点击邀请奖励功能,打开功能页面,页面将展示用户的邀请码,点击复制按钮,可以把邀请码复制到剪贴板上发送给别人,也可点击右上角的分享按钮,弹窗分享弹窗,选择分享的渠道,将用户的名片分享在其他社交app中。

名片上有该用户邀请码和二维码。新用户方扫描二维码会打开app的下载链接,下载并注册登录app后会成为该用户的下级。新用户也可以在app首页的邀请码弹窗中手动输入对方的邀请码并成为对方的下级。

二、实现直播软件源码邀请功能的代码如下

public class ThreeDistributActivity extends AbsActivity implements View.OnClickListener, LiveShareDialogFragment.ActionListener {private ProgressBar mProgressBar;private WebView mWebView;private final int CHOOSE = 100;//Android 5.0以下的private final int CHOOSE_ANDROID_5 = 200;//Android 5.0以上的private ValueCallback<Uri> mValueCallback;private ValueCallback<Uri[]> mValueCallback2;private TextView mInviteCode;//邀请码private View mContainer;private ImageView mQrCode;//二维码private File mShareImageFile;//分享图片文件private MobShareUtil mMobShareUtil;@Overrideprotected int getLayoutId() {return R.layout.activity_three_distribut;}@Overrideprotected void main() {Intent intent = getIntent();StringExtra(Constants.TIP));mContainer = findViewById(R.id.share_container);ImageView mAppIcon = findViewById(R.id.app_icon);TextView mAppName = findViewById(R.id.app_name);CommonAppConfig appConfig = Instance();mAppIcon.AppIconRes());mAppName.AppName());ImageView avatar = findViewById(R.id.avatar);TextView name = findViewById(R.id.name);TextView idVal = findViewById(R.id.id_val);mInviteCode = findViewById(R.id.invite_code);mQrCode = findViewById(R.id.qr_code);findViewById(R.id.btn_share).setOnClickListener(this);UserBean u = UserBean();if (u != null) {ImgLoader.displayAvatar(mContext, u.getAvatar(), avatar);name.UserNiceName());idVal.act("ID:", u.getId()));}String url = StringExtra(Constants.URL);L.e("H5--->" + url);LinearLayout container = (LinearLayout) findViewById(ainer);mProgressBar = (ProgressBar) findViewById(R.id.progressbar);mWebView = new WebView(mContext);LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);pMargin = DpUtil.dp2px(1);mWebView.setLayoutParams(params);mWebView.setOverScrollMode(View.OVER_SCROLL_NEVER);container.addView(mWebView);mWebView.setWebViewClient(new WebViewClient() {@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {L.e("H5-------->" + url);if (url.startsWith(Constants.COPY_PREFIX)) {String content = url.substring(Constants.COPY_PREFIX.length());if (!TextUtils.isEmpty(content)) {copy(content);}} else {view.loadUrl(url);}return true;}@Overridepublic void onPageFinished(WebView view, String url) {Title());}});mWebView.setWebChromeClient(new WebChromeClient() {@Overridepublic void onProgressChanged(WebView view, int newProgress) {if (newProgress == 100) {mProgressBar.setVisibility(View.GONE);} else {mProgressBar.setProgress(newProgress);}}//以下是在各个Android版本的直播源码中, WebView调用文件选择器的方法// For Android < 3.0public void openFileChooser(ValueCallback<Uri> valueCallback) {openImageChooserActivity(valueCallback);}// For Android  >= 3.0public void openFileChooser(ValueCallback valueCallback, String acceptType) {openImageChooserActivity(valueCallback);}//For Android  >= 4.1public void openFileChooser(ValueCallback<Uri> valueCallback,String acceptType, String capture) {openImageChooserActivity(valueCallback);}// For Android >= 5.0@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)@Overridepublic boolean onShowFileChooser(WebView webView,ValueCallback<Uri[]> filePathCallback,FileChooserParams fileChooserParams) {mValueCallback2 = filePathCallback;Intent intent = ateIntent();startActivityForResult(intent, CHOOSE_ANDROID_5);return true;}});Settings().setJavaScriptEnabled(true);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {Settings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);}mWebView.loadUrl(url);QrCode(new HttpCallback() {@Overridepublic void onSuccess(int code, String msg, String[] info) {if (code == 0 && info.length > 0) {JSONObject obj = JSON.parseObject(info[0]);if (mInviteCode != null) {mInviteCode.String("code"));}if (mQrCode != null) {ImgLoader.display(mContext, String("qr"), mQrCode);}}}});}private void openImageChooserActivity(ValueCallback<Uri> valueCallback) {mValueCallback = valueCallback;Intent intent = new Intent();if (Build.VERSION.SDK_INT < 19) {intent.setAction(Intent.ACTION_GET_CONTENT);} else {intent.setAction(Intent.ACTION_PICK);intent.setData(MediaStore.Images.Media.EXTERNAL_CONTENT_URI);}intent.setType("image/*");ateChooser(intent, String(com.yunbaomon.R.string.choose_flie)), CHOOSE);}@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent intent) {ActivityResult(requestCode, resultCode, intent);switch (requestCode) {case CHOOSE://5.0以下选择图片后的回调processResult(resultCode, intent);break;case CHOOSE_ANDROID_5://5.0以上选择图片后的回调processResultAndroid5(resultCode, intent);break;}}private void processResult(int resultCode, Intent intent) {if (mValueCallback == null) {return;}if (resultCode == RESULT_OK && intent != null) {Uri result = Data();ReceiveValue(result);} else {ReceiveValue(null);}mValueCallback = null;}@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)private void processResultAndroid5(int resultCode, Intent intent) {if (mValueCallback2 == null) {return;}if (resultCode == RESULT_OK && intent != null) {ReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, intent));} else {ReceiveValue(null);}mValueCallback2 = null;}protected boolean canGoBack() {return mWebView != null && mWebView.canGoBack();}@Overridepublic void onBackPressed() {if (isNeedExitActivity()) {finish();} else {if (canGoBack()) {Back();} else {finish();}}}private boolean isNeedExitActivity() {if (mWebView != null) {String url = Url();if (!TextUtils.isEmpty(url)) {ains("g=Appapi&m=Auth&a=success")//身份认证成功页面|| ains("g=Appapi&m=Family&a=home");//家族申请提交成功页面}}return false;}public static void forward(Context context, String title, String url) {url = act(url, "&uid=", Instance().getUid(), "&token=", Instance().getToken());Intent intent = new Intent(context, ThreeDistributActivity.class);intent.putExtra(Constants.URL, url);intent.putExtra(Constants.TIP, title);context.startActivity(intent);}@Overrideprotected void onDestroy() {MainHttpUtil.cancel(MainHttpConsts.GET_QR_CODE);if (mWebView != null) {ViewGroup parent = (ViewGroup) Parent();if (parent != null) {veView(mWebView);}mWebView.destroy();}Destroy();}/*** 复制到剪贴板*/private void copy(String content) {ClipboardManager cm = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);ClipData clipData = wPlainText("text", content);cm.setPrimaryClip(clipData);ToastUtil.show(py_success);}/*** 生成分享图片*/private void saveBitmapFile() {quest(this, new PermissionCallback() {@Overridepublic void onAllGranted() {if (mContainer == null) {return;}mContainer.setDrawingCacheEnabled(true);Bitmap bitmap = DrawingCache();bitmap = ateBitmap(bitmap);mContainer.setDrawingCacheEnabled(false);File dir = new File(CommonAppConfig.CAMERA_IMAGE_PATH);if (!ists()) {dir.mkdirs();}mShareImageFile = new File(dir, Constants.SHARE_QR_CODE_FILE);boolean result = Instance().saveBitmap(bitmap, mShareImageFile);if (result) {if (bitmap != null && !bitmap.isRecycled()) {le();}LiveShareDialogFragment fragment = new LiveShareDialogFragment();fragment.setNoLink(true);fragment.setActionListener(ThreeDistributActivity.this);fragment.show(getSupportFragmentManager(), "LiveShareDialogFragment");}}}, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE);}@Overridepublic void onClick(View v) {if (v.getId() == R.id.btn_share) {saveBitmapFile();}}@Overridepublic void onItemClick(String type) {if (mShareImageFile == null) {return;}if (mMobShareUtil == null) {mMobShareUtil = new MobShareUtil();}mMobShareUtil.shareImage(mContext, type, Path(), null);}
}

以上就是小云豹对于直播软件源码中邀请奖励功能部分开发的代码,大家可直接取用,最近随着腾讯系、头条系、阿里系几家争锋不断,链接形式分享直播间会越来越容易被封链接,而分享二维码拉人方式的优势正逐渐显现出来,以对抗腾讯系产品对其他家产品的“分享封杀”政策。

本文发布于:2024-02-02 16:11:18,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170686147644930.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:源码   功能   软件
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23