O7OFWD0

[iOS開發]Firebase04 – Remote Config 之使用

這也是個好東西,以前做APP如果想要 update 一些資訊,但是很窮沒辦法用 push notification 分開來通知,我都會用一招,簡單來說就是如果我要更新資料 key,我就會在 NSUserDefault 中,設定一個值叫做 keyUpdateTime,然後存入更新時間。每次用戶切換 view controller,我都會檢查一次這個時間,比對現在時間與 keyUpdateTime所存的時間是否有超過 24小時,超過的話就重新撈一次資料,並將資料重新存在 NSUserDefault 中。

以下 code 簡單示意一下,每 24 小時設定值 timeout,所以從 server 重新下載 config 資料。

-(void)checkAndUpdateKeyData{
    
    NSDate *nowDate = [NSDate date];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss zzz"];
    
    
    if ([VarAccess getKeyUpdateTime] == nil) {
        
        //first time to set default data
        [VarAccess setKeyUpdateTime:[dateFormatter stringFromDate:nowDate]];
        [VarAccess setKeyData:yourData];
        
    }else{
        
        NSDate *updateDate = [dateFormatter dateFromString:[VarAccess getKeyUpdateTime]];
        
        //固定時間,每隔1天檢查一次
        int secondInterval = 1 * 24 * 60 *60;
        //        int secondInterval = 10; //for testing 30 sec
        
        
        NSDate *addDate = [updateDate dateByAddingTimeInterval:(secondInterval)];
        
        
        if ([nowDate compare:addDate] == NSOrderedDescending) {
            
            [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
                
                
                NSInteger responseCode = [(NSHTTPURLResponse *)response statusCode];
                
                if (!error && responseCode == 200) {
                    
                    NSDictionary* yourData = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
                    
                    [VarAccess setKeyUpdateTime:[dateFormatter stringFromDate:nowDate]];
                    [VarAccess setKeyData:yourData];
                    
                    
                } else {
                
                    //handle error
                    
                }
                
            }];
            
            
        }
        
    }
    
    
}

1.在Firebase後台設定你需要的 config 資料

But, 現在有了 remote config ,你就不用再管理自己的 config 資料拉。 先在 Firebase 的後台設定你需要的 config。下圖設定了一個 promote_alert 的 config

螢幕快照_2016-06-13_下午6_23_44

 

2.在程式中取得 config 資料

Firebase remote config 的 expiration time 預設是 12個小時。也就是每超過 12個小時,你重新呼叫下列程式,就會重新抓取資料。如果在 12個小時內你重新執行到此段程式,一樣會進到 block 區段,只是 remote config 會直接從 local 取得還沒過期的(你上次下載的資料)給你。

self.remoteConfig = [FIRRemoteConfig remoteConfig];
    [self.remoteConfig fetchWithCompletionHandler:^(FIRRemoteConfigFetchStatus status, NSError * _Nullable error) {
        
        if (!error) {
            [self.remoteConfig activateFetched];
        }
        
    }];

3. 使用 config 資料

其中 promote_alert 就是我們在後台設定的 config 名稱。所以得到的數值當然就如同上圖顯示的,應該是 NO

self.remoteConfig[@"promote_alert"].stringValue

 

相關文章
[iOS開發]Firebase01 – 基礎設定與 Firebase Analytics 的使用
[iOS開發]Firebase02 – 使用 Firebase Crash Reporting
[iOS開發]Firebase03 – 使用 Firebase Cloud Messaging for Push notification
[iOS開發]Firebase04 – Remote Config 之使用

 

特色圖片來源Designed by Freepik

標籤: , ,

很愛畫虎爛的我,開始了用文章唬爛社會大眾的志業!