大佬教程收集整理的这篇文章主要介绍了在Deezer iOS SDK中恢复会话,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是Android恢复会话代码:
// restore any saved session SessionStore 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 @R_673_9531@e 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
因此,您可以从DeezerConnect实例检索令牌,到期日期和用户标识符.您可以将它们保存到钥匙串中.
下次用户启动应用程序时,您可以在DeezerConnect实例上设置这些值(从Keychain中检索它们),并通过向同一对象发送 – [DeezerConnect isSessionValid]消息来测试其有效性.如果会话仍然有效,请不要让用户再次登录.
显然,钥匙串是建议的地方,以便存储令牌和到期日期.
欲了解更多信息:iOS Session Management
更新
您是否能够修改单例实例的创建方式?
而不是这个代码
//SHARED INSTANCE static 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中恢复会话所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。