Chrome కస్టమ్ ట్యాబ్లు ఎందుకు ఇతర అనువర్తనాలను తెరవవు మరియు దాన్ని ఎలా పరిష్కరించాలి
ఆండ్రాయిడ్ డెవలపర్లు తరచూ అనువర్తనంలో బ్రౌజింగ్ కోసం క్రోమ్ కస్టమ్ ట్యాబ్లపై ఆధారపడతారు, కాని లోతైన లింకింగ్ సమస్యలు పెద్ద అడ్డంకి. పేపాల్ చెల్లింపు URL ను ప్రారంభించేటప్పుడు, ఉదాహరణకు, క్రోమ్ వినియోగదారులను పేపాల్ అనువర్తనాన్ని తెరవడం లేదా బ్రౌజర్లో కొనసాగించడం మధ్య ఎంచుకోవడానికి ప్రేరేపిస్తుంది. అయితే, Chrome కస్టమ్ ట్యాబ్లను ఉపయోగించినప్పుడు ఇది జరగదు. 🤔
వినియోగదారులకు ఎంపిక ఇవ్వడానికి బదులుగా, Chrome కస్టమ్ ట్యాబ్లు బ్రౌజర్ లోపల ప్రతిదీ ఉంచుతాయి. దీని అర్థం అనువర్తనం ఇన్స్టాల్ చేయబడినప్పటికీ, లోతైన లింకింగ్కు మద్దతు ఇస్తున్నప్పటికీ, అది .హించిన విధంగా తెరవకపోవచ్చు. ఈ పరిమితి నిరాశపరిచింది, ప్రత్యేకించి బాహ్య అనువర్తనాల ద్వారా అతుకులు చెల్లింపు ప్రవాహాలపై లేదా ప్రామాణీకరణపై ఆధారపడే అనువర్తనాల కోసం.
ఆసక్తికరంగా, వంటి అనుకూల పథకాన్ని ఉపయోగించడం myapp: // deeplinkurl/ సరిగ్గా పనిచేస్తుంది. ఇది ఒక ముఖ్యమైన ప్రశ్నను లేవనెత్తుతుంది: డెవలపర్లు డిఫాల్ట్ను భర్తీ చేయడానికి అనువర్తనాలను ఎలా ప్రారంభిస్తారు http Chrome కస్టమ్ ట్యాబ్ల లోపల పథకం? పరిష్కారానికి లోతైన లింక్ కాన్ఫిగరేషన్, ఉద్దేశ్య ఫిల్టర్లు మరియు కొన్ని ప్రత్యామ్నాయాల మిశ్రమం అవసరం.
ఈ వ్యాసంలో, క్రోమ్ కస్టమ్ ట్యాబ్లతో expected హించిన విధంగా లోతైన లింకింగ్ రచనలను ఎలా నిర్ధారించాలో మేము అన్వేషిస్తాము. మేము ఈ సమస్యను సమర్థవంతంగా నిర్వహించడానికి సాధ్యమయ్యే పరిష్కారాలు, వాస్తవ-ప్రపంచ ఉదాహరణలు మరియు ఉత్తమ పద్ధతుల ద్వారా వెళ్తాము. 🚀
కమాండ్ | ఉపయోగం యొక్క ఉదాహరణ |
---|---|
CustomTabsIntent.Builder() | Chrome కస్టమ్ ట్యాబ్స్ బిల్డర్ యొక్క ఉదాహరణను సృష్టిస్తుంది, ప్రారంభించినప్పుడు టాబ్ ఎలా ప్రవర్తిస్తుందో అనుకూలీకరించడానికి అనుమతిస్తుంది. |
customTabsIntent.intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) | Chrome కస్టమ్ టాబ్ క్రొత్త పనిలో ప్రారంభమవుతుందని నిర్ధారిస్తుంది, అనువర్తనాల మధ్య మారేటప్పుడు నావిగేషన్ సమస్యలను నివారిస్తుంది. |
customTabsIntent.launchUrl(this, Uri.parse(url)) | ఇచ్చిన URL ని నేరుగా Chrome కస్టమ్ ట్యాబ్లో ప్రారంభిస్తుంది, అనువర్తనంలో బ్రౌజింగ్ అనుభవాన్ని సున్నితంగా చేస్తుంది. |
app.get('/generate-link', (req, res) =>app.get('/generate-link', (req, res) => {}) | ప్రశ్న పారామితుల ఆధారంగా లోతైన లింక్లను డైనమిక్గా ఉత్పత్తి చేసే నోడ్.జెస్ ఎక్స్ప్రెస్ మార్గాన్ని నిర్వచిస్తుంది. |
Intent.FLAG_ACTIVITY_NEW_TASK | ఇప్పటికే ఉన్న పని వెలుపల క్రొత్త కార్యాచరణను ప్రారంభించడానికి ఉపయోగించే జెండా, వేర్వేరు అనువర్తనాల మధ్య సున్నితమైన పరివర్తనను నిర్ధారిస్తుంది. |
deepLink = 'paypal://checkout' | అనుకూల పథకాన్ని ఉపయోగించి లోతైన లింక్ను నిర్వచిస్తుంది, బాహ్య అనువర్తనం (ఉదా., పేపాల్) నేరుగా తెరవడానికి అనుమతిస్తుంది. |
res.json({ deepLink }) | డైనమిక్గా ఉత్పత్తి చేయబడిన లోతైన లింక్ను కలిగి ఉన్న JSON ప్రతిస్పందనను పంపుతుంది, ఇది ఫ్రంటెండ్ ఉపయోగించడం సులభం చేస్తుంది. |
request(app).get('/generate-link?app=paypal') | బ్యాకెండ్ లోతైన లింక్లను సరిగ్గా ఉత్పత్తి చేస్తుందని ధృవీకరించడానికి హాస్య పరీక్షలో HTTP GET అభ్యర్థనను అనుకరిస్తుంది. |
expect(res.body.deepLink).toBe('paypal://checkout') | బ్యాకెండ్ నుండి ప్రతిస్పందనలో pay హించిన పేపాల్ లోతైన లింక్ ఉందని, సరైన కార్యాచరణను నిర్ధారిస్తుందని నొక్కి చెబుతుంది. |
CustomTabsIntent.Builder().build() | బాహ్య లింక్లను ప్రారంభించడంలో తక్షణ ఉపయోగం కోసం సిద్ధంగా ఉన్న పూర్తిగా నిర్మించిన క్రోమ్ కస్టమ్ టాబ్ ఉదాహరణను సృష్టిస్తుంది. |
క్రోమ్ కస్టమ్ ట్యాబ్లు మరియు లోతైన అనుసంధాన సవాళ్లను అర్థం చేసుకోవడం
ప్రపంచంలో Android అభివృద్ధి, క్రోమ్ కస్టమ్ ట్యాబ్లు స్థానిక అనుభవాన్ని కొనసాగిస్తూ వెబ్ కంటెంట్ను అనువర్తనాల్లోకి అనుసంధానించడానికి సమర్థవంతమైన మార్గాన్ని అందిస్తాయి. ఏదేమైనా, లోతైన లింక్లతో వ్యవహరించేటప్పుడు -ముఖ్యంగా పేపాల్ వంటి మరొక అనువర్తనానికి దారి మళ్లింపు అవసరమయ్యేవి -ఆశించిన ప్రవర్తన ఎల్లప్పుడూ as హించిన విధంగా పనిచేయదు. మా జావా మరియు కోట్లిన్ స్క్రిప్ట్లు బాహ్య అనువర్తనాలను ప్రారంభించడానికి లోతైన అనుసంధాన పద్ధతులు, ఉద్దేశ్య ఫిల్టర్లు మరియు ఆప్టిమైజ్ చేసిన పద్ధతులను పెంచడం ద్వారా ఈ సమస్యను పరిష్కరించడం లక్ష్యంగా పెట్టుకున్నారు.
జావాలో వ్రాయబడిన మొదటి స్క్రిప్ట్ క్రోమ్ కస్టమ్ టాబ్ను ప్రారంభిస్తుంది మరియు వెబ్ ఆధారిత చెల్లింపు పేజీని తెరవడానికి ప్రయత్నిస్తుంది. ఏదేమైనా, Chrome కస్టమ్ ట్యాబ్లు ఎల్లప్పుడూ get హించిన లోతైన అనుసంధాన ప్రవర్తనను ప్రేరేపించవు. దీన్ని పరిష్కరించడానికి, మేము ఉపయోగించి స్పష్టమైన ఉద్దేశాన్ని నిర్వచించాము CustomTabsintent, కొన్ని జెండాలను అనుమతించేటప్పుడు టాబ్ expected హించిన విధంగా తెరుచుకుంటుందని నిర్ధారిస్తుంది Intent.flag_activity_new_task బాహ్య అనువర్తన పరస్పర చర్యలను సులభతరం చేయడానికి. ప్రస్తుత సందర్భంలో తెరవడం కంటే అనువర్తనం కొత్త పనిని ప్రారంభించాల్సిన దృశ్యాలలో ఈ జెండా చాలా ముఖ్యమైనది.
మెరుగైన అనుకూలత కోసం, కోట్లిన్లో వ్రాయబడిన రెండవ స్క్రిప్ట్ ఇదే విధమైన నిర్మాణాన్ని అనుసరిస్తుంది, అయితే కోట్లిన్ యొక్క ఆధునిక వాక్యనిర్మాణాన్ని ఉపయోగించి మెమరీ నిర్వహణ మరియు ఉద్దేశ్య నిర్వహణను ఆప్టిమైజ్ చేస్తుంది. సిస్టమ్తో లోతైన లింక్ నమోదు చేయబడితే, దానికి సరైన ప్రాధాన్యత లభిస్తుందని ఈ విధానం నిర్ధారిస్తుంది. ఇంకా, లోపం నిర్వహణ మరియు ప్రత్యామ్నాయ URL పథకాలు (ఉదా., myapp: // deeplinkurl/) ప్రామాణిక HTTP- ఆధారిత లోతైన లింకింగ్ విఫలమైనప్పుడు ఫాల్బ్యాక్ మెకానిజమ్స్ సరిగ్గా పనిచేస్తాయని నిర్ధారించడానికి అమలు చేయబడతాయి.
బ్యాకెండ్లో, మా నోడ్.జెఎస్ పరిష్కారం ప్రశ్న పారామితుల ఆధారంగా లోతైన లింక్లను డైనమిక్గా ఉత్పత్తి చేస్తుంది. ఈ పద్ధతి వినియోగదారులు పేపాల్, మరొక చెల్లింపు గేట్వే లేదా అనుకూల లోతైన లింక్ను ఉపయోగిస్తున్నారా అని సరిగ్గా మళ్ళించబడుతుందని నిర్ధారిస్తుంది. కార్యాచరణను ధృవీకరించడానికి, జెస్ట్-బేస్డ్ యూనిట్ పరీక్షలు సర్వర్ వేర్వేరు దృశ్యాలకు లోతైన లింక్లను సరిగ్గా ఉత్పత్తి చేస్తుందని ధృవీకరిస్తుంది. ప్రామాణీకరణ లేదా చెల్లింపు పూర్తి వంటి వివిధ వినియోగదారు ప్రవాహాలను నిర్వహించడానికి ఇది ప్రత్యేకంగా ఉపయోగపడుతుంది, ఇక్కడ అనువర్తనాల మధ్య అతుకులు పరివర్తన అవసరం. 🚀
Android లో Chrome కస్టమ్ ట్యాబ్లలో లోతైన లింకింగ్ను నిర్వహించడం
లోతైన లింక్ నిర్వహణ కోసం జావా మరియు కోట్లిన్ ఉపయోగించి ఆండ్రాయిడ్ అభివృద్ధి
// Java solution for handling deep linking in Chrome Custom Tabs
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.browser.customtabs.CustomTabsIntent;
public class CustomTabActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String url = "https://www.paypal.com/checkout";
openCustomTab(url);
}
private void openCustomTab(String url) {
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
CustomTabsIntent customTabsIntent = builder.build();
customTabsIntent.intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
customTabsIntent.launchUrl(this, Uri.parse(url));
}
}
మెరుగైన అనుకూలత కోసం ప్రత్యామ్నాయ కోట్లిన్ అమలు
ఉద్దేశ్య వడపోతతో కోట్లిన్ ఉపయోగించి ఆండ్రాయిడ్ అభివృద్ధి
// Kotlin solution for better deep link handling in Chrome Custom Tabs
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.browser.customtabs.CustomTabsIntent
class CustomTabActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val url = "https://www.paypal.com/checkout"
openCustomTab(url)
}
private fun openCustomTab(url: String) {
val builder = CustomTabsIntent.Builder()
val customTabsIntent = builder.build()
customTabsIntent.intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
customTabsIntent.launchUrl(this, Uri.parse(url))
}
}
బ్యాకెండ్ పరిష్కారం: లోతైన లింక్ ప్రతిస్పందనలను రూపొందించడానికి node.js ని ఉపయోగించడం
లోతైన లింక్లను రూపొందించడానికి node.js మరియు ఎక్స్ప్రెస్ ఉపయోగించి బ్యాకెండ్ పరిష్కారం
// Node.js backend to generate deep links dynamically
const express = require('express');
const app = express();
const PORT = 3000;
app.get('/generate-link', (req, res) => {
const targetApp = req.query.app || 'paypal';
let deepLink = '';
if (targetApp === 'paypal') {
deepLink = 'paypal://checkout';
} else {
deepLink = 'myapp://deeplinkurl';
}
res.json({ deepLink });
});
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});
డీప్ లింక్ దారి మళ్లింపును యూనిట్ పరీక్షించడం
Node.js బ్యాకెండ్ కోసం జెస్ట్ ఉపయోగించి యూనిట్ పరీక్షలు
// Jest test cases for verifying deep link generation
const request = require('supertest');
const app = require('../server');
test('Should return PayPal deep link', async () => {
const res = await request(app).get('/generate-link?app=paypal');
expect(res.body.deepLink).toBe('paypal://checkout');
});
test('Should return default deep link', async () => {
const res = await request(app).get('/generate-link?app=myapp');
expect(res.body.deepLink).toBe('myapp://deeplinkurl');
});
Chrome కస్టమ్ ట్యాబ్లలో లోతైన లింకింగ్ మద్దతును మెరుగుపరుస్తుంది
చర్చించేటప్పుడు తరచుగా పట్టించుకోని ఒక కీలకమైన అంశం Chrome కస్టమ్ ట్యాబ్లు మరియు లోతైన అనుసంధానం యొక్క ప్రభావం Android అనువర్తన లింకులు. సాంప్రదాయ లోతైన లింక్ల మాదిరిగా కాకుండా, ఇది కస్టమ్ URI పథకాలపై ఆధారపడి ఉంటుంది (ఉదా., MYAPP: // DEEPlinkurl/), Android అనువర్తన లింక్లు ధృవీకరించబడిన HTTP- ఆధారిత లింక్లను ఉపయోగిస్తాయి. ఈ పద్ధతి ఒక నిర్దిష్ట URL క్లిక్ చేసినప్పుడు ఒక అనువర్తనాన్ని నేరుగా తెరవడానికి అనుమతిస్తుంది, వినియోగదారు ప్రాంప్ట్ యొక్క అవసరాన్ని దాటవేస్తుంది. ఏదేమైనా, Chrome కస్టమ్ ట్యాబ్లు ఎల్లప్పుడూ ఈ సెట్టింగ్లను గౌరవించవు, ఇది unexpected హించని ప్రవర్తనను కలిగిస్తుంది.
ఈ పరిమితి చుట్టూ పనిచేయడానికి, డెవలపర్లు కలయికను అమలు చేయవచ్చు డిజిటల్ ఆస్తి లింకులు మరియు ఉద్దేశ్య వడపోత. వారి డొమైన్లో JSON ఫైల్ను హోస్ట్ చేయడం ద్వారా, డెవలపర్లు తమ వెబ్సైట్ను వారి Android అనువర్తనంతో అనుబంధించవచ్చు, లింక్లను నిర్వహించేటప్పుడు దీనికి ప్రాధాన్యత ఇస్తుంది. పేపాల్ లేదా ప్రామాణీకరణ అనువర్తనాలు వంటి బాహ్య అనువర్తనాల్లో తెరవవలసిన లింక్లను ట్రాప్ చేయకుండా ఇది క్రోమ్ను నిరోధిస్తుంది. అదనంగా, కాన్ఫిగర్ చేస్తోంది intent-filters Androidmanifest.xml లో, క్రోమ్ కస్టమ్ ట్యాబ్ల ద్వారా యాక్సెస్ చేసినప్పటికీ, లోతైన లింకులు సరిగ్గా ట్రిగ్గర్ చేస్తాయని నిర్ధారిస్తుంది.
పరిగణించవలసిన మరో అంశం వినియోగదారు అనుభవం. కొంతమంది వినియోగదారులు బ్రౌజర్ లేదా సంబంధిత అనువర్తనంలో లింక్ను తెరవడానికి ఎంపికను కలిగి ఉండటానికి ఇష్టపడతారు. ఉపయోగించి వినియోగదారు-స్నేహపూర్వక ప్రాంప్ట్ అమలు PackageManager.resolveActivity() లోతైన లింక్ను తెరవడానికి ప్రయత్నించే ముందు అనువర్తనం ఇన్స్టాల్ చేయబడిందో లేదో తనిఖీ చేయడానికి సహాయపడుతుంది. వినియోగదారులకు వారి అనుభవంపై నియంత్రణ ఇవ్వడం ద్వారా, డెవలపర్లు నిరాశను తగ్గించవచ్చు మరియు వెబ్ మరియు మొబైల్ అనువర్తనాల మధ్య అతుకులు లేని నావిగేషన్ను నిర్ధారించవచ్చు. 🚀
Chrome కస్టమ్ ట్యాబ్లు మరియు లోతైన లింకింగ్ గురించి సాధారణ ప్రశ్నలు
- Chrome కస్టమ్ ట్యాబ్లు సాధారణ క్రోమ్ లాగా లోతైన లింక్ను ఎందుకు ప్రేరేపించకూడదు?
- Chrome కస్టమ్ ట్యాబ్లు వినియోగదారులను బ్రౌజర్ అనుభవంలో ఉంచడానికి ప్రాధాన్యత ఇస్తాయి, తరచుగా విస్మరిస్తాయి intent-filters స్పష్టంగా కాన్ఫిగర్ చేయకపోతే.
- బాహ్య అనువర్తనాన్ని తెరవడానికి నేను క్రోమ్ కస్టమ్ టాబ్ను ఎలా బలవంతం చేయగలను?
- ఉపయోగం Intent.FLAG_ACTIVITY_NEW_TASK మీ ఇంటెంట్ హ్యాండ్లింగ్ కోడ్లో సరిగ్గా నిర్మాణాత్మక లోతైన లింక్తో పాటు.
- లోతైన లింక్ మరియు ఆండ్రాయిడ్ అనువర్తన లింక్ మధ్య తేడా ఏమిటి?
- లోతైన లింక్ కస్టమ్ URI పథకాన్ని ఉపయోగిస్తుంది (ఉదా., MYAPP: // DEEPlinkurl/), అయితే Android అనువర్తన లింక్ అనేది ధృవీకరించబడిన HTTP- ఆధారిత లింక్, ఇది ఒక అనువర్తనంలో నేరుగా తెరుచుకుంటుంది.
- లోతైన లింక్ను తెరవడానికి ముందు అనువర్తనం ఇన్స్టాల్ చేయబడితే నేను గుర్తించవచ్చా?
- అవును, మీరు ఉపయోగించవచ్చు PackageManager.resolveActivity() అనువర్తనం ప్రారంభించడానికి ప్రయత్నించే ముందు ఒక అనువర్తనం అందుబాటులో ఉందో లేదో తనిఖీ చేయడానికి.
- లోతైన లింకింగ్కు డిజిటల్ ఆస్తి లింకులు ఎలా సహాయపడతాయి?
- వారు డెవలపర్లను డొమైన్ యొక్క యాజమాన్యాన్ని ధృవీకరించడానికి మరియు వారి అనువర్తనంతో అనుబంధించటానికి అనుమతిస్తారు, Android అనువర్తనం లింక్లు సరిగ్గా తెరిచి ఉండేలా చూసుకుంటాయి.
లోతైన అనుసంధాన సవాళ్ళపై తుది ఆలోచనలు
Android లో లోతైన లింక్ను అమలు చేయడానికి క్రోమ్ కస్టమ్ ట్యాబ్లు బాహ్య అనువర్తనాలతో ఎలా సంకర్షణ చెందుతాయో అర్థం చేసుకోవాలి. కస్టమ్ స్కీమ్ లేదా డిజిటల్ ఆస్తి లింక్లను ఉపయోగించడం చాలా సమస్యలను పరిష్కరించగలదు, కాని సరైన ఉద్దేశ్య నిర్వహణ చాలా కీలకం. డెవలపర్లు స్థిరత్వం మరియు అతుకులు లేని వినియోగదారు అనుభవాన్ని నిర్ధారించడానికి బహుళ పరికరాల్లో వారి అమలును పరీక్షించాలి.
Chrome కస్టమ్ ట్యాబ్లు వేగవంతమైన మరియు సురక్షితమైన బ్రౌజింగ్ అనుభవాన్ని అందిస్తున్నప్పటికీ, అవి పరిమితం కావచ్చు. వినియోగదారు ప్రాంప్ట్లు మరియు ఫాల్బ్యాక్ మెకానిజమ్లతో సహా బాగా ఆప్టిమైజ్ చేసిన లోతైన అనుసంధాన వ్యూహం అనువర్తన వినియోగాన్ని పెంచుతుంది. సరైన కాన్ఫిగరేషన్లతో, ఆండ్రాయిడ్ అనువర్తనాలు వెబ్ మరియు మొబైల్ పరిసరాల మధ్య సున్నితమైన నావిగేషన్ను నిర్వహించగలవు. 🔥
Chrome కస్టమ్ ట్యాబ్లు మరియు లోతైన లింకింగ్పై ముఖ్య సూచనలు
- Android అనువర్తనాల్లో లోతైన లింక్లను సృష్టించే సమగ్ర గైడ్ కోసం, అధికారిక Android డెవలపర్ల డాక్యుమెంటేషన్ను చూడండి: అనువర్తన కంటెంట్కు లోతైన లింక్లను సృష్టించండి .
- Chrome కస్టమ్ ట్యాబ్లతో లోతైన లింక్లను నిర్వహించడంపై చర్చ కోసం, ఈ స్టాక్ ఓవర్ఫ్లో థ్రెడ్ను చూడండి: Android అనువర్తనంలో Chrome కస్టమ్ ట్యాబ్ల నుండి కొన్ని లింక్లను తెరవాలా? .
- Chrome కస్టమ్ ట్యాబ్లతో వెబ్వ్యూలను భద్రపరచడానికి అంతర్దృష్టుల కోసం, ఈ కథనాన్ని పరిగణించండి: Chrome కస్టమ్ ట్యాబ్లతో వెబ్వ్యూలను భద్రపరచడం .
Chrome కస్టమ్ ట్యాబ్లు మరియు లోతైన లింకింగ్పై కీ వనరులు
- అనువర్తన కంటెంట్కు లోతైన లింక్లను సృష్టించే సమగ్ర గైడ్ కోసం, అధికారిక ఆండ్రాయిడ్ డెవలపర్ల డాక్యుమెంటేషన్ను చూడండి: అనువర్తన కంటెంట్కు లోతైన లింక్లను సృష్టించండి .
- అనుకూల ట్యాబ్లతో అనువర్తన లింక్లను నిర్వహించడంపై ఆచరణాత్మక చర్చ కోసం, ఈ స్టాక్ ఓవర్ఫ్లో థ్రెడ్ను చూడండి: అన్హాండ్డ్ అప్లింక్ల కోసం అనుకూల ట్యాబ్లు .
- Chrome కస్టమ్ ట్యాబ్లతో వెబ్వ్యూలను భద్రపరచడానికి అంతర్దృష్టుల కోసం, ఈ కథనాన్ని PLAID ద్వారా పరిగణించండి: Chrome కస్టమ్ ట్యాబ్లతో వెబ్వ్యూలను భద్రపరచడం .