你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> 改進iOS客戶端的升級提醒功能

改進iOS客戶端的升級提醒功能

編輯:IOS開發綜合

先申明一下,我是碼農,不是一個產品經理,但我覺得現有市面上的很多App,在設計“升級提示功能”都有問題。在此分享一下我的想法,歡迎大家討論。

這些有問題的App包括:新浪微博、網易微博、網易新聞客戶端以及大部分帶有升級提示功能的App,所以我覺得這個問題還是挺普遍的。對於該問題,一句話描述起來就是:“這些App都會在用戶剛剛使用它的時候,提示有新版本,讓用戶去AppStore上下載最新的版本”。下面是某個應用的升級提示截圖:

 

為什麼我認為這是一個糟糕的設計呢?因為用戶剛剛打開你的App,明顯就是想使用你的功能。例如剛剛打開新浪微博,可能就是想看一下最新的消息或回復。剛剛打開網易新聞客戶端,可能就是想看看最新的新聞。這個時候,你告訴用戶有新版本,是想讓用戶暫時放棄使用該App嗎?我不知道有多少用戶會去點“升級”這個按鈕,反正我每次看到這個提示都很郁悶,因為我如果點了,我就暫時不能使用該應用了(升級時原版本的App是無法使用的)。所以我在想,這個提示升級的時間能不能做得更友好一些?

有一次在地鐵上我想到了一個好辦法,就是讓升級提示不是出現在軟件剛剛打開的時候,而是用戶剛剛退出App的時候,我們可以在用戶剛剛退出App的時候,向iOS設備發一個本地的通知(Local Notification),在本地通知上顯示升級提示。當用戶點擊這個升級提示時,我們的App在啟動後跳轉到AppStore,這樣就達到的提示升級的效果。

這樣做相比以前的好處有以下幾點:

用戶退出App的時刻,是一個訪問這個App活動的結束。在這個時候提示,用戶更有理由接受升級。
即便用戶當前不接受升級,但這個升級提示都會存在用戶的通知中心中,用戶想升級時,點擊這個通知,就可以方便地一鍵跳到AppStore的下載頁面。而之前的方法在用戶取消後,用戶就不方便取獲下載地址了。
另外,本地通知的使用只需要iOS4.0以上版本即可,而在中國,iOS4.0以上比例達到了99%。本地通知也不需要向用戶申請發送通知的DeviceToken,所以該方案很少被用戶禁止(用戶只能專門去通知中心將該應用的所有通知關閉)。當然,這個升級提示也不應該每次都出現,以免對用戶產生太多打撓,象我在粉筆網客戶端上設置的策略是最多半個月出現一次。

在我在粉筆網iPhone端實現該方案後,有一次我發現支付寶的iOS客戶端也采用通知的方式來提示用戶升級,看來大家都想到一塊兒了。不過從通知的發送時間來看,他們應該不是使用的本地通知,而是通過服務器發送Push通知的方式。這種方式的好處是即使用戶安裝後一次也沒有使用你的App,你還是可以通過通知來喚醒他,可能的壞處是:

可能用戶已經升完級了,你還把升級通知的信息發給用戶了。象我就是,支付寶都升完級了,還發通知提示我有新版可以使用。
用戶如果禁止了應用的Push通知,你就沒辦法發送升級提醒了。
技術實現
再簡單說一下技術實現,我寫了一個VersionAgent類,每24小時最多向服務器請求一次最新的App版本,如果版本有更新,則在AppDelegate的applicationDidEnterBackgroundl回調中,發送一個本地通知,示例代碼如下:

 
- (void)applicationDidEnterBackground:(UIApplication *)application
{
    if ([[VersionAgent sharedInstance] shouldShowLocalNotification]) {
        dispatch_async(dispatch_get_main_queue(), ^{
            UILocalNotification * localNotification = [[UILocalNotification alloc] init];
            if (localNotification) {
                localNotification.fireDate= [[[NSDate alloc] init] dateByAddingTimeInterval:3];
                localNotification.timeZone=[NSTimeZone defaultTimeZone];
                localNotification.alertBody = @"粉筆網客戶端有新的版本,點擊到App Store升級。";
                localNotification.alertAction = @"升級";
                localNotification.soundName = @"";
                [application scheduleLocalNotification:localNotification];
            }
        });
    }
}
然後通過AppDelegate的回調函數,判斷App的啟動方式是否是通過用戶點擊通知中心的升級提示來啟動,如果是,則跳轉到AppStore,示例代碼如下:

 
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
    // open app store link
    NSString * url = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/app/id%@", APP_STORE_ID];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
}
題外話


最新微博上有一個新聞很火,一個技術男,給女友發彈窗通知求愛。有些人回復說這樣做太麻煩,需要在服務器上記DeviceToken,否則所有用戶都發的話,會讓很多不相關的人收到。

其實這完全可以用本地通知來做,完全不需要服務器配合,相當簡單。 具體做法是:你自己寫一個發本地求愛通知的小應用,然後記下女友手機的UDID,將女友的手機設置成開發者設備,然後抓住一次機會在其手機上安裝好開發者證書和你寫的這個小App即可。可以把這個App隱藏在某個文件夾下面,然後打開一次,設置好本地通知的發出時間即可。

我的很多文章最後結尾都是Have fun,不過最近很難高興起來啊。因為0x12 Big,今天google的全線產品都無法訪問了。想起我每天的工作都是用google搜技術貼,用gmail收郵件,用gtalk聊天,我的聯系人信息,備忘錄也是同步在google contact上,我真的無法fun起來了。本博客是架設在github上的,我也很擔心該博客可能也會因為是境外IP而被禁止訪問。

有時候,我很氣憤,而有時候,我會樂觀地想,這些都是負能量的積累,黎明前的黑暗。不管怎麼樣,誰也無法阻止大家對自由的向往,希望有朝一日,所有人都能自由地獲取信息。
 

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved