1.0.7 • Published 9 months ago

otpless-ionic v1.0.7

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

otpless-ionic

Otpless ionic plugin support for android and ios apps

Install

npm install otpless-ionic
npx cap sync

Login Page API

IONIC

Import the OtplessManager

import {OtplessManager} from 'otpless-ionic';

In your login component create the instance of OtplessManager.

let manager = new OtplessManager()

Call showOtplessLoginPage method on button click or while loading component to launch OTPless sdk

let jsonParams = {appId: "APP_ID"}
const data = await manager.showOtplessLoginPage(jsonParams);

IOS

  • Go to your application root folder and install pod. Run the below command
pod install
  • Add below lines in info.plist file
<key>CFBundleURLTypes</key>
 <array>
  <dict>
   <key>CFBundleURLSchemes</key> 
   <array>
    <stringotpless.your_app_id_in_lowercase</string> 
   </array>
   <key>CFBundleTypeRole</key>
   <string>Editor</string>
   <key>CFBundleURLName</key>
   <string>otpless</string> 
 </dict>
</array> 
<key>LSApplicationQueriesSchemes</key> 
<array>
 <string>whatsapp</string>
 <string>otpless</string> 
 <string>gootpless</string>
 <string>com.otpless.ios.app.otpless</string> 
 <string>googlegmail</string>
</array>

<key>NSAppTransportSecurity</key>
        <dict>
            <key>NSAllowsArbitraryLoads</key>
            <true/>
            <key>NSExceptionDomains</key>
            <dict>
                <key>80.in.safr.sekuramobile.com</key>
                <dict>
                    <key>NSIncludesSubdomains</key>
                    <true/>
                    <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                    <true/>
                    <key>NSTemporaryExceptionMinimumTLSVersion</key>
                    <string>TLSv1.1</string>
                </dict>
                <key>partnerapi.jio.com</key>
                <dict>
                    <key>NSIncludesSubdomains</key>
                    <true/>
                    <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                    <true/>
                    <key>NSTemporaryExceptionMinimumTLSVersion</key>
                    <string>TLSv1.1</string>
                </dict>
            </dict>
        </dict>
  • Add application method in your AppDelegate
import OtplessSDK
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
        if (Otpless.sharedInstance.isOtplessDeeplink(url: url)) {
            Otpless.sharedInstance.processOtplessDeeplink(url: url)
            return true
        }
        return ApplicationDelegateProxy.shared.application(app, open: url, options: options)
    }


}

Android

  • In MainActivity register the plugin, before calling super.onCreate.
import com.otpless.ionic.OtplessPlugin;
protected void onCreate(Bundle savedInstanceState) {
  registerPlugin(OtplessPlugin.class);
  super.onCreate(savedInstanceState);
}

@Override
public void onBackPressed() {
    if (OtplessPlugin.onBackPressed(this)) return;
    super.onBackPressed();
}
  • In AndroidManifest file added the intent filter in activity tag of your MainActivity
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data
        android:host="otpless"
        android:scheme= "otpless.your_app_id_in_lowercase"/>
</intent-filter>

Headless API

IONIC

  • Import the OtplessManager
import {OtplessManager} from 'otpless-ionic';
  • In your login component create the instance of OtplessManager.
let manager = new OtplessManager()
  • Init the headless sdk in useEffect webhook
useEffect(() => {
    manager.initHeadless("APP_ID");
    manager.setHeadlessCallback(onHeadlessResult);
    return () => {
      manager.clearListener();
    }
  }, []);
const onHeadlessResult = (data: any) => {
    let message: string = JSON.stringify(data);
    console.log(message);
  }

create phone number request for headless initialization

 headlessRequest = {
          "phone": phoneNumber,
          "countryCode": "91"
        }
  • for verification otp field is required
 headlessRequest = {
          "phone": phoneNumber,
          "countryCode": "91",
          "otp": otp
        }

create email request for headless initialization

 headlessRequest = {
          "email": email
        
        }
  • for verification otp field is required
 headlessRequest = {
          "email": email,
          "otp": otp
        }

create sso request like whatsapp for headless initialization

headlessRequest = {
        "channelType": WHATSAPP
      }
  • for verification otp field is required, in case of magic link no verification call is required, it is handled by sdk when user click on link.
headlessRequest = {
        "channelType": WHATSAPP,
        "otp": otp
      }

call startHeadless result is given in onHeadlessResult method

await manager.startHeadless(headlessRequest);

IOS

  • Go to your application root folder and install pod. Run the below command
pod install
  • Add below lines in info.plist file
<key>CFBundleURLTypes</key>
 <array>
  <dict>
   <key>CFBundleURLSchemes</key> 
   <array>
    <stringotpless.your_app_id_in_lowercase</string> 
   </array>
   <key>CFBundleTypeRole</key>
   <string>Editor</string>
   <key>CFBundleURLName</key>
   <string>otpless</string> 
 </dict>
</array> 
<key>LSApplicationQueriesSchemes</key> 
<array>
 <string>whatsapp</string>
 <string>otpless</string> 
 <string>gootpless</string>
 <string>com.otpless.ios.app.otpless</string> 
 <string>googlegmail</string>
</array>

<key>NSAppTransportSecurity</key>
        <dict>
            <key>NSAllowsArbitraryLoads</key>
            <true/>
            <key>NSExceptionDomains</key>
            <dict>
                <key>80.in.safr.sekuramobile.com</key>
                <dict>
                    <key>NSIncludesSubdomains</key>
                    <true/>
                    <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                    <true/>
                    <key>NSTemporaryExceptionMinimumTLSVersion</key>
                    <string>TLSv1.1</string>
                </dict>
                <key>partnerapi.jio.com</key>
                <dict>
                    <key>NSIncludesSubdomains</key>
                    <true/>
                    <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                    <true/>
                    <key>NSTemporaryExceptionMinimumTLSVersion</key>
                    <string>TLSv1.1</string>
                </dict>
            </dict>
        </dict>
  • Add application method in your AppDelegate
import OtplessSDK
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
        if (Otpless.sharedInstance.isOtplessDeeplink(url: url)) {
            Otpless.sharedInstance.processOtplessDeeplink(url: url)
            return true
        }
        return ApplicationDelegateProxy.shared.application(app, open: url, options: options)
    }


}

Android

  • In MainActivity register the plugin, before calling super.onCreate.
import com.otpless.ionic.OtplessPlugin;
protected void onCreate(Bundle savedInstanceState) {
  registerPlugin(OtplessPlugin.class);
  super.onCreate(savedInstanceState);
}

@Override
public void onBackPressed() {
    if (OtplessPlugin.onBackPressed(this)) return;
    super.onBackPressed();
}
  • In AndroidManifest file added the intent filter in activity tag of your MainActivity
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data
        android:host="otpless"
        android:scheme= "otpless.your_app_id_in_lowercase"/>
</intent-filter>
1.0.7

9 months ago

1.0.6

9 months ago

1.0.5

10 months ago

1.0.2

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago

0.2.0

1 year ago

0.1.1

2 years ago

0.1.0

2 years ago