इंटरनेट कनेक्टिविटी के लिए वाई-फ़ाई सुझाव एपीआई

Android 10 (एपीआई लेवल 29) और इसके बाद के वर्शन वाले डिवाइस, आपके ऐप्लिकेशन को नेटवर्क जोड़ने की अनुमति देते हैं वाई-फ़ाई ऐक्सेस पॉइंट से अपने-आप कनेक्ट होने वाले डिवाइस के क्रेडेंशियल. सप्लाई की जा सकती है किस नेटवर्क से कनेक्ट करना है, इसके सुझाव WifiNetworkSuggestion. आखिर में, प्लैटफ़ॉर्म यह तय करता है कि उसे कौनसा ऐक्सेस पॉइंट स्वीकार करना है. आपके ऐप्लिकेशन और अन्य लोगों के इनपुट.

Android 11 (एपीआई लेवल 30) और उसके बाद वाले वर्शन पर:

  • PasspointConfiguration का प्रावधान किया जा रहा है सुझाव एपीआई पर काम करता है. Android 11 से पहले के वर्शन में, PasspointConfiguration का प्रावधान किया जा रहा है addOrUpdatePasspointConfiguration() का इस्तेमाल करना ज़रूरी है एपीआई.
  • यह फ़्रेमवर्क, TLS पर आधारित एंटरप्राइज़ के लिए सुरक्षा से जुड़ी ज़रूरी शर्तों को लागू करता है सुझाव (ईएपी-टीएलएस, ईएपी-टीटीएलएस, और ईएपी-पीईएपी); ऐसे नेटवर्क के लिए सुझाव Root CA certificate सेट करना ज़रूरी है और एक server domain name.
  • यह फ़्रेमवर्क, ईएपी-सिम पर आधारित एंटरप्राइज़ के लिए, मालिकाना हक की ज़रूरी शर्तों को लागू करता है सुझाव (ईएपी-सिम, ईएपी-अके, ईएपी-अके-पीआरई); ऐसे सुझाव सिर्फ़ उन ऐप्लिकेशन को अनुमति है जिन पर मोबाइल और इंटरनेट सेवा देने वाली कंपनी के हस्ताक्षर होते हैं.
  • मोबाइल और इंटरनेट सेवा देने वाली कंपनी के हस्ताक्षर किए गए ऐप्लिकेशन से मिले सुझावों के लिए, फ़्रेमवर्क अपने-आप उन्हें ऐप्लिकेशन की मोबाइल और इंटरनेट सेवा देने वाली कंपनी का आईडी असाइन करता है मोबाइल और इंटरनेट सेवा देने वाली कंपनी के साथ हस्ताक्षर करना शामिल है. इस तरह अगर संबंधित सिम हटा दिया जाता है, तो सुझाव अपने-आप बंद हो जाते हैं डिवाइस से.

Android 12 (एपीआई लेवल 31) और उसके बाद वाले वर्शन पर:

  • लगातार एमएसी के रैंडमाइज़ेशन के ज़रिए, निजता की अतिरिक्त सुविधा चालू की जा सकती है. जो समय-समय पर किसी भी MAC पते को फिर से क्रम में लगाता है. setMacRandomizationSetting का इस्तेमाल करें का इस्तेमाल करें.

  • isPasspointTermsAndConditionsSupported(): नियम और शर्तें एक पासपॉइंट है ऐसी सुविधा जो असुरक्षित कैप्टिव पोर्टल को बदलने के लिए नेटवर्क डिप्लॉयमेंट को अनुमति देती है, जो सुरक्षित पासपॉइंट नेटवर्क के साथ ओपन नेटवर्क का इस्तेमाल करते हैं. एक सूचना है नियम और शर्तों को स्वीकार करना ज़रूरी होने पर, उपयोगकर्ता को दिखाया जाता है. ऐसे ऐप्लिकेशन जो नियमों और शर्तों के मुताबिक पासपॉइंट नेटवर्क के सुझाव देते हैं को पहले इस एपीआई को कॉल करना होगा. इससे यह पक्का किया जा सकेगा कि डिवाइस पर इस सुविधा के साथ काम किया जा सकता है या नहीं. अगर डिवाइस सुविधा के साथ काम नहीं करता है, तो यह कोई दूसरा या लेगसी नेटवर्क सुझाया जाना चाहिए.

  • isDecoratedIdentitySupported(): प्रीफ़िक्स सजावट के साथ नेटवर्क प्रमाणित करते समय, आइडेंटिटी प्रीफ़िक्स, नेटवर्क ऑपरेटर को नेटवर्क ऐक्सेस को अपडेट करने की अनुमति देता है एक से ज़्यादा प्रॉक्सी के ज़रिए साफ़ तौर पर रूटिंग करने के लिए, आइडेंटिफ़ायर (एनएआई) रिकॉर्ड करना है (देखें आरएफ़सी 7542: ज़्यादा जानें).

    Android 12, इस सुविधा को डब्ल्यूबीए स्पेसिफ़िकेशन के मुताबिक, पीपीएस-एमओ एक्सटेंशन भी होता है. ऐसे ऐप्लिकेशन जो पासपॉइंट नेटवर्क का सुझाव देते हैं उन्हें सजी हुई पहचान की ज़रूरत होती है इस एपीआई को पहले कॉल करें, ताकि यह पक्का किया जा सके कि डिवाइस पर इस सुविधा के साथ काम किया जा सकता है या नहीं. अगर आपने डिवाइस पर यह सुविधा काम नहीं करती और पहचान से जुड़ी जानकारी नहीं दिखेगी और नेटवर्क के लिए प्रमाणीकरण विफल हो सकता है.

पासपॉइंट का सुझाव बनाने के लिए, ऐप्लिकेशन को PasspointConfiguration Credential, और HomeSp क्लास. ये क्लास, पासपॉइंट प्रोफ़ाइल के बारे में बताती हैं, जिसकी जानकारी Wi-Fi Alliance में दी गई है पासपॉइंट खास जानकारी.

नीचे दिया गया कोड सैंपल, एक ओपन डोमेन प्रॉपर्टी के लिए क्रेडेंशियल देने का तरीका बताता है WPA2, एक WPA3 नेटवर्क और एक पासपॉइंट नेटवर्क:

Kotlin

val suggestion1 = WifiNetworkSuggestion.Builder()
        .setSsid("test111111")
        .setIsAppInteractionRequired(true) // Optional (Needs location permission)
        .build();

val suggestion2 = WifiNetworkSuggestion.Builder()
        .setSsid("test222222")
        .setWpa2Passphrase("test123456")
        .setIsAppInteractionRequired(true) // Optional (Needs location permission)
        .build();

val suggestion3 = WifiNetworkSuggestion.Builder()
        .setSsid("test333333")
        .setWpa3Passphrase("test6789")
        .setIsAppInteractionRequired(true) // Optional (Needs location permission)
        .build();

val passpointConfig = PasspointConfiguration(); // configure passpointConfig to include a valid Passpoint configuration
val suggestion4 = WifiNetworkSuggestion.Builder()
        .setPasspointConfig(passpointConfig)
        .setIsAppInteractionRequired(true) // Optional (Needs location permission)
        .build();

val suggestionsList = listOf(suggestion1, suggestion2, suggestion3, suggestion4);

val wifiManager = context.getSystemService(Context.WIFI_SERVICE) as WifiManager;

val status = wifiManager.addNetworkSuggestions(suggestionsList);
if (status != WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS) {
    // do error handling here
}

// Optional (Wait for post connection broadcast to one of your suggestions)
val intentFilter = IntentFilter(WifiManager.ACTION_WIFI_NETWORK_SUGGESTION_POST_CONNECTION);

val broadcastReceiver = object : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        if (!intent.action.equals(WifiManager.ACTION_WIFI_NETWORK_SUGGESTION_POST_CONNECTION)) {
            return;
        }
        // do post connect processing here
    }
};
context.registerReceiver(broadcastReceiver, intentFilter);

Java

final WifiNetworkSuggestion suggestion1 =
  new WifiNetworkSuggestion.Builder()
  .setSsid("test111111")
  .setIsAppInteractionRequired(true) // Optional (Needs location permission)
  .build();

final WifiNetworkSuggestion suggestion2 =
  new WifiNetworkSuggestion.Builder()
  .setSsid("test222222")
  .setWpa2Passphrase("test123456")
  .setIsAppInteractionRequired(true) // Optional (Needs location permission)
  .build();

final WifiNetworkSuggestion suggestion3 =
  new WifiNetworkSuggestion.Builder()
  .setSsid("test333333")
  .setWpa3Passphrase("test6789")
  .setIsAppInteractionRequired(true) // Optional (Needs location permission)
  .build();

final PasspointConfiguration passpointConfig = new PasspointConfiguration();
// configure passpointConfig to include a valid Passpoint configuration

final WifiNetworkSuggestion suggestion4 =
  new WifiNetworkSuggestion.Builder()
  .setPasspointConfig(passpointConfig)
  .setIsAppInteractionRequired(true) // Optional (Needs location permission)
  .build();

final List<WifiNetworkSuggestion> suggestionsList =
  new ArrayList<WifiNetworkSuggestion> {{
    add(suggestion1);
    add(suggestion2);
    add(suggestion3);
    add(suggestion4);
  }};

final WifiManager wifiManager =
  (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

final int status = wifiManager.addNetworkSuggestions(suggestionsList);
if (status != WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS) {
// do error handling here…
}

// Optional (Wait for post connection broadcast to one of your suggestions)
final IntentFilter intentFilter =
  new IntentFilter(WifiManager.ACTION_WIFI_NETWORK_SUGGESTION_POST_CONNECTION);

final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
  @Override
  public void onReceive(Context context, Intent intent) {
    if (!intent.getAction().equals(
      WifiManager.ACTION_WIFI_NETWORK_SUGGESTION_POST_CONNECTION)) {
      return;
    }
    // do post connect processing here...
  }
};
context.registerReceiver(broadcastReceiver, intentFilter);

ऐप्लिकेशन के पहली बार सुझाव देने के तुरंत बाद, उपयोगकर्ता सूचना दी गई. सूचना किस तरह की है, यह इस्तेमाल किए जा रहे Android के वर्शन के हिसाब से तय होता है डिवाइस पर:

  • Android 11 (एपीआई लेवल 30) और उसके बाद के वर्शन पर, उपयोगकर्ता को एक डायलॉग दिखता है. ऐसा तब होता है, जब ऐप्लिकेशन फ़ोरग्राउंड में चल रहा हो. साथ ही, अगर ऐप्लिकेशन फ़ोरग्राउंड में चल रहा हो, तो एक सूचना बैकग्राउंड शामिल करें.
  • Android 10 (एपीआई लेवल 29) पर, लोगों को सूचना दिखती है. भले ही, ऐप्लिकेशन फ़ोरग्राउंड में चल रहा है या बैकग्राउंड में.

जब यह प्लैटफ़ॉर्म किसी नेटवर्क सुझावों से कनेक्ट होता है, तो सेटिंग ऐसा टेक्स्ट जो सुझाव देने वाले उससे जुड़े ऐप्लिकेशन के नेटवर्क कनेक्शन का एट्रिब्यूट देता है.

उपयोगकर्ता के डिसकनेक्ट होने की समस्या को मैनेज करना

यदि उपयोगकर्ता किसी एक से स्पष्ट रूप से डिस्कनेक्ट करने के लिए वाई-फ़ाई पिकर का उपयोग करता है नेटवर्क से कनेक्ट होने पर सुझाव दिखाए जाते हैं, तो उस नेटवर्क को अनदेखा कर दिया जाता है अब भी सीमा में है. इस अवधि के दौरान, उस नेटवर्क पर विचार नहीं किया जाएगा अगर ऐप्लिकेशन, नेटवर्क के सुझाव को हटाकर फिर से जोड़ता है, तो भी यह सुविधा अपने-आप कनेक्ट हो जाएगी. नेटवर्क से संबंधित होता है. अगर उपयोगकर्ता साफ़ तौर पर वाई-फ़ाई पिकर का इस्तेमाल किसी ऐसे नेटवर्क से कनेक्ट करें जिसे पहले डिसकनेक्ट किया गया था, फिर वह नेटवर्क ऑटो-कनेक्शन के लिए तुरंत विचार किया जाएगा.

ऐप्लिकेशन की मंज़ूरी की स्थिति बदलना

नेटवर्क के सुझाव की सूचना अस्वीकार करने पर उपयोगकर्ता, CHANGE_WIFI_STATE को ऐप्लिकेशन से अनुमति मिली है. उपयोगकर्ता यह अनुमति दे सकता है बाद में वाई-फ़ाई कंट्रोल मेन्यू में जाकर (सेटिंग > ऐप्लिकेशन और सूचनाएं > विशेष एप्लिकेशन ऐक्सेस > वाई-फ़ाई कंट्रोल > App name).