InstagramManager
class InstagramManager {
private let userUpdated: ((UserInfoResponse) -> Void)
private let mediasUpdated: (([[String : Any]]) -> Void)
private let albumDetailUpdated: (([[String : Any]]) -> Void)
private let mediaItemUpdated: (([String : Any]) -> Void)
private let errorUpdated: ((String) -> Void)
init(userUpdated: @escaping (UserInfoResponse) -> Void,
mediasUpdated: @escaping ([[String : Any]]) -> Void,
albumDetailUpdated: @escaping ([[String : Any]]) -> Void,
mediaItemUpdated: @escaping ([String : Any]) -> Void,
errorUpdated: @escaping (String) -> Void) {
self.userUpdated = userUpdated
self.mediasUpdated = mediasUpdated
self.albumDetailUpdated = albumDetailUpdated
self.mediaItemUpdated = mediaItemUpdated
self.errorUpdated = errorUpdated
}
func getUserInfo() {
do {
try AccessTokenRepository.shared.getUserInfo { response in
self.userUpdated(response)
}
}catch(let error) {
if(error as? InstagramErrors == InstagramErrors.tokenEmpty){
self.errorUpdated("TOKEN_EMPTY")
return
}
if(error as? InstagramErrors == InstagramErrors.tokenExpired){
self.errorUpdated("TOKEN_EXPIRED")
return
}
print(error.localizedDescription)
self.errorUpdated("UNKNOWN_EXCEPTION")
}
}
func getMedias() {
do {
try AccessTokenRepository.shared.getMedias { response in
self.mediasUpdated(response)
}
}catch(let error) {
if(error as? InstagramErrors == InstagramErrors.tokenEmpty){
self.errorUpdated("TOKEN_EMPTY")
return
}
if(error as? InstagramErrors == InstagramErrors.tokenExpired){
self.errorUpdated("TOKEN_EXPIRED")
return
}
print(error.localizedDescription)
self.errorUpdated("UNKNOWN_EXCEPTION")
}
}
func getAlbumDetail(albumId: String) {
do {
try AccessTokenRepository.shared.getAlbumDetail(albumId: albumId, completionHandler: { response in
self.albumDetailUpdated(response)
})
}catch(let error) {
if(error as? InstagramErrors == InstagramErrors.tokenEmpty){
self.errorUpdated("TOKEN_EMPTY")
return
}
if(error as? InstagramErrors == InstagramErrors.tokenExpired){
self.errorUpdated("TOKEN_EXPIRED")
return
}
print(error.localizedDescription)
self.errorUpdated("UNKNOWN_EXCEPTION")
}
}
func getMediaItem(mediaId: String) {
do {
try AccessTokenRepository.shared.getMediaItem(mediaId: mediaId, completionHandler: { response in
self.mediaItemUpdated(response)
})
}catch(let error) {
if(error as? InstagramErrors == InstagramErrors.tokenEmpty){
self.errorUpdated("TOKEN_EMPTY")
return
}
if(error as? InstagramErrors == InstagramErrors.tokenExpired){
self.errorUpdated("TOKEN_EXPIRED")
return
}
print(error.localizedDescription)
self.errorUpdated("UNKNOWN_EXCEPTION")
}
}
func logout(){
AccessTokenRepository.shared.logout()
self.userUpdated(UserInfoResponse(id: "", username: "", accountType: ""))
}
func hasFoundInstagramClient() -> Bool{
guard Bundle.main.object(forInfoDictionaryKey: "INSTAGRAM_CLIENT_ID") as? String != nil,
Bundle.main.object(forInfoDictionaryKey: "INSTAGRAM_CLIENT_SECRET") as? String != nil,
Bundle.main.object(forInfoDictionaryKey: "REDIRECT_URI") as? String != nil else {
self.errorUpdated("NOT_FOUND_IG_CLIENT")
return false
}
return true
}
}
iOS 端,SwiftInstagramBasicDisplayApiPlugin
在收到指令时,会由handle
依FlutterMethodCall
处理传来的事件,而方法等API都放至在InstagramManager
,且在InstagramManager
设置listeniing callback供SwiftInstagramBasicDisplayApiPlugin
监听,在执行完方法後回传结果callback 给SwiftInstagramBasicDisplayApiPlugin
,最後在透过MethodChannel
回传结果至Flutter 端
<<: Day29 Data Storage in iOS 05 - Core Data 实作专案范例
大家好!为了将我自己在系统分析师养成的道路上经历过的种种事情传承给後进,我会自今日起不定时发表文章在...
今日文章目录 需求说明 事前准备 显示效果 需求说明 在每个ToDoList项目中,都可以作番茄钟...
题外话 补充昨天忘记下的结论:不管要绘制的图案多大,都建议画(储存)在一个和原图一样大的canvas...
-使用私钥和公钥对强大的程序集进行签名和验证 (来源:https://flylib.com/boo...
这是Erwin参加WUSON CISSP课程的上课笔记, 整理的真的很棒! 大家不一定要来上我的课,...