67 lines
2.4 KiB
Swift
67 lines
2.4 KiB
Swift
//
|
|
// YMLineManager.swift
|
|
// YuMi
|
|
//
|
|
// Created by duoban on 2023/12/29.
|
|
//
|
|
|
|
import Foundation
|
|
import LineSDK
|
|
|
|
@objc public enum LineLoginResultStatus: NSInteger {
|
|
case error
|
|
case cancelled
|
|
case success
|
|
}
|
|
|
|
public class PILineLoginManager: NSObject {
|
|
private static var manager: PILineLoginManager?
|
|
@objc public class func getSharedInstance() -> PILineLoginManager {
|
|
guard let instance = manager else {
|
|
manager = PILineLoginManager()
|
|
return manager!
|
|
}
|
|
return instance
|
|
}
|
|
|
|
@objc public class func registerLine() {
|
|
LoginManager.shared.setup(channelID: "1657475529", universalLinkURL: nil)
|
|
}
|
|
|
|
@objc public class func applicationOpenurl(_ app: UIApplication,
|
|
open url: URL?) -> Bool {
|
|
return LoginManager.shared.application(app, open: url)
|
|
}
|
|
|
|
@objc public class func application(
|
|
_ application: UIApplication,
|
|
continueWithUserActivity: NSUserActivity,
|
|
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
|
|
return LoginManager.shared.application(application, open: continueWithUserActivity.webpageURL)
|
|
}
|
|
|
|
@objc public func loginLine(fromController: UIViewController, completeWithError: @escaping (_ loginStatus: LineLoginResultStatus, _ token: String?, _ userId:String?, _ email: String? , _ error: Error?) -> Void) {
|
|
var param = LoginManager.Parameters.init()
|
|
param.allowRecreatingLoginProcess = true
|
|
LoginManager.shared.login(permissions: [.openID, .profile], in: fromController, parameters: param) { (result) in
|
|
switch result {
|
|
case .success(let loginResult):
|
|
if let _ = loginResult.accessToken.IDTokenRaw {
|
|
completeWithError(.success, loginResult.accessToken.value, loginResult.userProfile?.userID ?? "", nil, nil)
|
|
} else {
|
|
completeWithError(.success, "","", nil, nil)
|
|
}
|
|
case .failure(let error):
|
|
print(error)
|
|
completeWithError(.cancelled, "","", nil, nil)
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
@objc public class func destroyLine() {
|
|
PILineLoginManager.manager = nil
|
|
}
|
|
|
|
}
|