BBSSDK 產品分析

皮皮醬發表於2018-07-06
產品介紹
BBSSDK主要是將論壇的一些文章,版塊,帖子,評論等內容,整合到App,可以實現使用者便捷獲取資訊,瀏覽閱讀,該移動資料方案,也可以自動同步Discuz服務端資料,且不限制儲存空間和流量。
UI自定義
BBSSDK分為簡約版和時尚版兩個版本,這兩個版本除了展示效果的不同,功能完全一致.簡約版注重UI的簡潔,介面清晰利落.時尚版追求UI的炫酷,裡面實現了很多毛玻璃,動畫等效果.具體選擇哪個版本,依據不同業務需求而定.
 BBSSDK 產品分析


簡約版
 BBSSDK 產品分析


時尚版
主介面展示了論壇和門戶兩大模組.這兩個模組實現不同業務功能,但並不一定全部展示.展示哪個模組由後臺決定,使用者可以通過後臺進行手動配置.功能結構如下:
 BBSSDK 產品分析


通過整合我們的SDK,你可以自己設定整個介面顯示的內容,比如首頁部分,該介面有資訊和論壇兩個部分,如果使用者有不同的業務需求,則使用者可以通過後臺的配置,可以隱藏或者顯示指定的內容,能更好的適用於不同的業務場景。
由於BBSSDK中包含有多個板塊內容,且每個板塊內容是完全不同分類的,該使用者也可以只使用板塊中的一種來展示自己內容,並在改部分也有分類篩選以及按回復時間排序和按發帖時間排序等功能。
 BBSSDK 產品分析


對於BBSSDK的UI介面,如果使用者想使用自己獨特的個性圖片,則只需要更換一些具體介面的圖片,具體操作步驟如下:
1. 開啟SDK資料夾下的BBSSDKUI.bundle,在改bundle下面,分為Common|Forum|Home|LBS|User 等,不同的介面會有對應介面的資料夾,存放該介面對應的圖片資源
2. 找到不同的介面下不同的分類,使用者可以根據自己的需要,對具體的介面進行鍼對性的替換,當然,這裡面還包含了公共部分
3. 圖片檔名包含@2x,@3x等字尾以適配不同螢幕清晰度,替換時需要都替換
BBSSDKUI.bundle
│     
└───threerdParty   //三方庫資原始檔
│   │ MJRefresh  
│   │ SVProgressHUD  
│   │ ZSSRichEditor  
│   
└───Common       //公用部分圖片資源
│   │    
│   
└───Emoji       //表情圖片資源
│   │ coolmonkey  
│   │ default
|   | grapeman       
│   
└───Forum      //版塊圖片資源
│   │    
│   
└───Home      //主頁圖片資源
│   │    
│   
└───LBS      //地理位置圖片資源
│   │     
│   
└───Login&Register  // 登入註冊頁面圖片資源
    
BBSSDK 可以實現自定義介面,在獲取帖子列表介面中,使用者可以將傳入的版塊id引數設定為唯一的,則請求出的資料資訊就只有一種版塊資料,此外,使用者也可以設定selectType引數為唯一值,則資料展示也會值顯示使用者指定的列表資訊。
/**
 獲取帖子列表

 @param fid 板塊id
 @param orderType 排序依據 :createdOn 按照發帖時間排序.lastPost 按照回帖時間排序。
 @param selectType displayOrder 置頂,digest 精華,heats 熱門,latest 最新
 @param pageIndex 頁索引
 @param pageSize 每頁請求大小
 @param result 回撥
 */
+ (void)getThreadListWithFid:(NSInteger)fid
                   orderType:(NSString *)orderType
                  selectType:(NSString *)selectType
                   pageIndex:(NSInteger)pageIndex
                    pageSize:(NSInteger)pageSize
                      result:(void (^)(NSArray *threadList, NSError *error))result;
                      
由於BBSSDK的UI是開源的,使用者可以在原有UI介面的基礎上進行佈局設定,例如個人中心部分,使用者可以值使用我們BBSSDK的使用者資訊,而介面可以新增其他資訊,將BBSSDK中的資料作為一個單獨項展示
 BBSSDK 產品分析


在BBSSDK中,也可以自定義版塊,由於BBSSDK中資料完全可以有後臺來配置模組部分,故使用者可以自己設定自己產品論壇中擁有的模組,並可以按照BBSSDK中的展示,給使用者置頂版塊的許可權。
 BBSSDK 產品分析


使用者登入
使用者可以使用QQ登入或者微信登入,此種方式登入後,BBSSDK會自動獲取使用者的基本資訊,或者使用者也可以使用註冊的方式自己進行註冊登入。一旦使用者登入之後,我們的BBSSDK就會將使用者的資訊進行快取記錄,以方便在發帖或者評論時進行身份驗證使用,程式碼如下:
- (void)authLoginWithOpenid:(NSString *)openid
                    unionid:(NSString *)unionid
                   authType:(NSString *)authType
                  createNew:(NSNumber *)createNew
                   userName:(NSString *)userName
                      email:(NSString *)email
                   password:(NSString *)password
                 questionId:(NSNumber *)questionId
                     answer:(NSString *)answer
                 coordinate:(BBSLocationCoordinate *)coordinate
                     result:(void(^)(BBSUser *user, id res, NSError *error))result
{
    __weak typeof(self) theContext = self;
    BBSService *service = [BBSService sharedInstance];
    [service authLoginWithAppkey:_appKey
                          openid:openid
                         unionid:unionid
                        authType:authType
                       createNew:createNew
                        userName:userName
                           email:email
                        password:password
                      questionId:questionId
                          answer:answer
                      coordinate:coordinate
                            duid:self.duid
                          apppkg:self.apppkg
                          appver:self.appver
                          sdkver:self.sdkver
                            plat:@(self.plat)
                         factory:self.factory
                           model:self.model
                          sysver:self.sysver
                          result:^(id res, BBSError *error)
     {
         BBSUser *user = nil;
         if (!error)
         {
             if ([res isKindOfClass:NSDictionary.class])
             {
                 user = [[BBSUser alloc] init];
                 [user setValueForPropertiesWithDictionary:res];
                 
                 //快取使用者資訊
                 theContext.currentUser= user;
                 [theContext _saveCurrentUser];
             }
         }
         
         if (result)
         {
             result(user,res,error);
         }
     }];
}
在BBSSDK中,使用者進行操作時,也會做一個登入的身份驗證,比如在使用者進行發帖、評論、瀏覽等操作中,驗證如下:
- (void)postError:(NSError *)error title:(NSString *)title html:(NSString *)html
{
    
    if (error.code == 9001200)
    {//token失效,請重新登入
        [BBSUIContext shareInstance].currentUser = nil;
    }
    
   //code....
   
}
在BBSSDK中登入也接入了UCenter方案,UCenter提供同步登入、退出、註冊等相關介面,可以實現使用者使用一個賬號,在一處登入,全站通行。
深度連結
BBSSDK的深度連結功能,主要通過ShareSDK和MobLink結合來完成,主要用於實現社群、其他App,瀏覽網站等不同功能模組之間的快速跳轉。在BBSSDK中,BBSSDKUI對ShareSDK和MobLink採取弱引用的整合方式。通過這樣方式,在整合BBSSDKUI.framework的時候,即使不新增ShareSDK和MobLink這兩個模組,也不會影響其他業務功能。實現了整個專案的低耦合。
具體使用配置如下
1. 申請AppKey,並引用MobLink的SDK庫
2. 在Xcode中,新增URL的Scheme
3. 在MObLink官方配置Bundele ID,包名等資訊進行生成Universal Link
4. 將生成的Universal Link,新增到專案中的 Associated Domains 中
5. 新增功能程式碼如下
+ (NSString *)MLSDKPath
{
    return @"/portal/detail";
}

- (instancetype)initWithMobLinkScene:(BBSMOBFScene *)scene;
{
    self = [super init];
    if (self)
    {
        NSDictionary *sceneDict = [scene getParams];
        self.aid = [sceneDict[@"aid"] integerValue];
    }
    return self;
}

等以上所需配置完畢,使用者需要先分享內容到第三方App比如微信,在微信中開啟分享的連結,點選訪問原網頁,可以看到提示步驟,並按照提示步驟進行操作,會看到如下圖,點選開啟即會回到使用者使用BBSSDK整合的App中
 BBSSDK 產品分析

BBSSDK 產品分析

 
簽到 && 訊息
BBSSDK中提供了使用者簽到功能,並能檢視簽到的使用者資訊。
當使用者發帖時,別的使用者對帖子評價或者喜歡等操作,會收到訊息通知,可以及時獲取跟帖動態。

相關文章