Line SDK wrapper for React Native π
- LINE SDK v5 for iOS, wrapped with Swift.
- LINE SDK v5 for Android, wrapped with Kotlin.
- Android
minSdkVersion
needs to be at least version24
. - iOS
deploymentTarget
needs to be at least version15.1
. - LINE developer account with a channel created.
Important
@xmartlabs/react-native-line v5 is now a TurboModule and requires the new architecture to be enabled.
- If you want to use @xmartlabs/react-native-line v5, you need to enable the new architecture in your app (see how to enable the new architecture for apps)
- If you cannot enable the new architecture yet, downgrade to @xmartlabs/react-native-line v4 for now.
-
Install the JavaScript side with:
npx expo install @xmartlabs/react-native-line
-
Add the plugin
expo-build-properties
to yourapp.json
:"plugins": [ [ "expo-build-properties", { "ios": { "useFrameworks": "static" // This is required } } ], "@xmartlabs/react-native-line" ]
-
Install library:
npm install @xmartlabs/react-native-line # --- or --- yarn add @xmartlabs/react-native-line
-
Link native code:
cd ios && pod install
-
Change your
AppDelegate
to match the following:@xmartlabs/react-native-line v4
import RNLine ... override func application(_ application: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { return LineLogin.application(application, open: url, options: options) }
@xmartlabs/react-native-line v5
import react_native_line ... override func application(_ application: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { return LineLogin.application(application, open: url, options: options) }
@xmartlabs/react-native-line v4
#import "RNLine-Swift.h" ... - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options { return [LineLogin application:application open:url options:options]; }
@xmartlabs/react-native-line v5
#import "react_native_line-Swift.h" ... - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options { return [LineLogin application:application open:url options:options]; }
-
Insert the following snippet in your
Info.plist
to match the LINE documentation:<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLSchemes</key> <array> <string>line3rdp.$(PRODUCT_BUNDLE_IDENTIFIER)</string> </array> </dict> </array> <key>LSApplicationQueriesSchemes</key> <array> <string>lineauth2</string> </array>
-
A
setup
function has been added and needs to be called before using the library.Line.setup({ channelId: 'YOUR_CHANNEL_ID' })
-
The
getBotFriendshipStatus
function is now calledgetFriendshipStatus
. -
The
refreshToken
function is now calledrefreshAccessToken
.
-
The file name in the
AppDelegate
import has changed.- #import "RNLine-Swift.h" + #import "react_native_line-Swift.h"
-
The
login
function now expects an empty object as a default value.- Line.login() + Line.login({})
-
Import the
Line
module:import Line from '@xmartlabs/react-native-line'
-
Initialize the module with the
setup
method:useEffect(() => { Line.setup({ channelId: 'YOUR_CHANNEL_ID' }) }, [])
-
Login with the
login
method:Line.login({})
Function | Description |
---|---|
login(params: LoginParams): Promise<LoginResult> |
Starts the login flow of Line's SDK (Opens the apps if it's installed and defaults to the browser otherwise). It accepts the same argumements as the LineSDK, in an object { key: value } , defaults the same way as LineSDK too. |
getCurrentAccessToken(): Promise<AccessToken> |
Returns the access token of the current user. |
getProfile(): Promise<UserProfile> |
Returns the current user profile information. |
logout(): Promise<void> |
Revokes the access token of the current user. |
refreshAccessToken(): Promise<AccessToken> |
Refreshes the access token of the current user. |
setup(params: SetupParams): Promise<void> |
Initializes the Line SDK. |
verifyAccessToken(): Promise<VerifyResult> |
Checks whether the access token of the current user is valid. |
getFriendshipStatus(): Promise<FriendshipStatus> |
Gets the friendship status between the LINE Official Account (which is linked to the current channel) and the user if configured. |
If you want to see @xmartlabs/react-native-line
in action, just move into the example folder and run npm install
and then npm run ios
/npm run android
. By seeing its source code, you will have a better understanding of the library usage.
@xmartlabs/react-native-line
is available under the MIT license. See the LICENCE file for more info.
Created with β€οΈ by Xmartlabs