这是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中恢复会话所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)