在Deezer iOS SDK中恢复会话

在Deezer iOS SDK中恢复会话,第1张

概述我正在使用 Deezer iOS SDK,在Swift到目前为止一切顺利,除了会话,在Android SDK中存在一个方法.restoreSession()以避免d出用户每次登录,但我在iOS SDK中看不到它,所以每次会话过期,用户d出窗口再次使用hi的Deezer帐户登录,无论如何在iOS SDK中保存或恢复会话? 这是Android恢复会话代码: // restore any saved s 我正在使用 Deezer iOS SDK,在Swift到目前为止一切顺利,除了会话,在AndroID SDK中存在一个方法.restoreSession()以避免d出用户每次登录,但我在iOS SDK中看不到它,所以每次会话过期,用户d出窗口再次使用hi的Deezer帐户登录,无论如何在iOS SDK中保存或恢复会话?

这是AndroID恢复会话代码:

// restore any saved sessionSessionStore sessionStore = new SessionStore();if (sessionStore.restore(deezerConnect,context)) {    // The restored session is valID,navigate to the Home Activity    Intent intent = new Intent(context,HomeActivity.class);    startActivity(intent); }

是否可以在iOS SDK中执行此 *** 作?

因为当用户使用Deezer SDK登录时,我没有收到代表的通知

class DeezerSession : NSObject,DeezerSessionDelegate{    var DZRReqManager:DZRRequestManager = DZRRequestManager()    var deezerConnect:DeezerConnect!    let defaults = UserDefaults.standard    var callbackLogin : (()->())? = nil    //SHARED INSTANCE    static var instance: DeezerSession!    class func sharedInstance() -> DeezerSession {        if self.instance == nil        {            self.instance  = DeezerSession();        }        return self.instance    }    overrIDe init()    {        super.init()        self.deezerConnect                  = DeezerConnect(appID: "***",andDelegate: self )        self.DZRReqManager.dzrConnect       = self.deezerConnect        self.deezerConnect.sessionDelegate  = self        self.retrIEvetokenAndExpirationDate()    }    // See http://www.deezer.com/fr/developers/simpleAPI/permissions    // for a description of the permissions    func connectToDeezerWithPermissions()    {        print("[DeezerSession] connectToDeezerWithPermissions.")        //Check if Session still valID update it        self.deezerConnect.authorize([DeezerConnectPermissionBasicAccess,DeezerConnectPermissionManagelibrary,DeezerConnectPermissionOfflineAccess                                      ])    }    func savetoken(token:String,expirationDate:Date,userID:String)    {        print("[DeezerSession] Token. \(token) : Saved ")        print("[DeezerSession] Expire Date after. \(expirationDate) : Saved ")        print("[DeezerSession] User ID . \(userID) : Saved ")        defaults.setValue(token,forKey: "DEEZER_TOKEN_KEY")        defaults.setValue(expirationDate,forKey: "DEEZER_EXPIRATION_DATE_KEY")        defaults.setValue(userID,forKey: "DEEZER_USER_ID_KEY")    }    func deezerSessionDIDConnect()    {    }    func retrIEvetokenAndExpirationDate()    {        self.deezerConnect.accesstoken      = defaults.string(forKey: "DEEZER_TOKEN_KEY")        self.deezerConnect.expirationDate   = defaults.object(forKey: "DEEZER_EXPIRATION_DATE_KEY") as? Date ?? Date()        self.deezerConnect.userID           = defaults.string(forKey: "DEEZER_USER_ID_KEY")        print("[DeezerSession] Token. \(self.deezerConnect.accesstoken) : Restored ")        print("[DeezerSession] Expire Date. \(self.deezerConnect.expirationDate) : Restored ")        print("[DeezerSession] User ID . \(self.deezerConnect.userID) : Restored ")    }    func isSessionValID()-> Bool    {        print("[DeezerSession] isSessionValID . \(self.deezerConnect.isSessionValID()) ")        return self.deezerConnect.isSessionValID()    }    func deezerDIDLogin()    {        print("[DeezerSession] deezerDIDLogin.")        self.savetoken(token : self.deezerConnect.accesstoken,expirationDate : self.deezerConnect.expirationDate,userID : self.deezerConnect.userID)        if  self.callbackLogin != nil        {            self.callbackLogin!()        }    }     func deezerDIDNotLogin()-> Bool    {        print("[DeezerSession] deezerDIDNotLogin.")        return true    }     func deezerDIDlogout()    {        print("[DeezerSession] deezerDIDlogout.")    }}

所有代表都没有解雇deezerDIDlogout deezerDIDNotLogin deezerDIDLogin

解决方法 SDK提供DeezerSessionDelegate.根据文档,在用户成功登录时调用deezerDIDLogin.

因此,您可以从DeezerConnect实例检索令牌,到期日期和用户标识符.您可以将它们保存到钥匙串中.

下次用户启动应用程序时,您可以在DeezerConnect实例上设置这些值(从Keychain中检索它们),并通过向同一对象发送 – [DeezerConnect isSessionValID]消息来测试其有效性.如果会话仍然有效,请不要让用户再次登录.

显然,钥匙串是建议的地方,以便存储令牌和到期日期.

欲了解更多信息:iOS Session Management

更新

您是否能够修改单例实例的创建方式?

而不是这个代码

//SHARED INSTANCEstatic var instance: DeezerSession!class func sharedInstance() -> DeezerSession {    if self.instance == nil    {        self.instance  = DeezerSession();    }    return self.instance}

只是用

static let shared = DeezerSession()

实际上这是在Swift中使用singleton的推荐方法.

我认为你也不需要init方法中的覆盖.

总结

以上是内存溢出为你收集整理的在Deezer iOS SDK中恢复会话全部内容,希望文章能够帮你解决在Deezer iOS SDK中恢复会话所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1032273.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存