免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
改進(jìn)iOS客戶端的升級提醒功能

功能設(shè)計

先申明一下,我是碼農(nóng),不是一個產(chǎn)品經(jīng)理,但我覺得現(xiàn)有市面上的很多App,設(shè)計的“升級提示功能”都不太友好。在此分享一下我的想法,歡迎大家討論。

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

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

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

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

  1. 用戶退出App的時刻,是一個訪問這個App活動的結(jié)束。在這個時候提示,用戶更有理由接受升級。
  2. 即便用戶當(dāng)前不接受升級,但這個升級提示都會存在用戶的通知中心中,用戶想升級時,點擊這個通知,就可以方便地一鍵跳到AppStore的下載頁面。而之前的方法在用戶取消后,用戶就不方便取獲下載地址了。

另外,本地通知的使用只需要iOS4.0以上版本即可,而在中國,iOS4.0以上比例達(dá)到了99%。本地通知也不需要向用戶申請發(fā)送通知的DeviceToken,所以該方案很少被用戶禁止(用戶只能專門去通知中心將該應(yīng)用的所有通知關(guān)閉)。當(dāng)然,這個升級提示也不應(yīng)該每次都出現(xiàn),以免對用戶產(chǎn)生太多打撓,象我在粉筆網(wǎng)客戶端上設(shè)置的策略是最多半個月出現(xiàn)一次。

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

  1. 可能用戶已經(jīng)升完級了,你還把升級通知的信息發(fā)給用戶了。象我就是,支付寶都升完級了,還發(fā)通知提示我有新版可以使用。
  2. 用戶如果禁止了應(yīng)用的Push通知,你就沒辦法發(fā)送升級提醒了。

技術(shù)實現(xiàn)

再簡單說一下技術(shù)實現(xiàn),我寫了一個VersionAgent類,每24小時最多向服務(wù)器請求一次最新的App版本。然后在每次App啟動5秒后,檢查一下是否過了24小時一次的請求閾值,如下所示:

12345678
- (void)applicationDidBecomeActive:(UIApplication *)application{    double delayInSeconds = 5.0;    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){        [[VersionAgent sharedInstance] checkVersion];    });}

如果版本有更新,則在AppDelegate的applicationDidEnterBackgroundl回調(diào)中,發(fā)送一個本地通知,示例代碼如下:

12345678910111213141516
- (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 = @"粉筆網(wǎng)客戶端有新的版本,點擊到App Store升級。";                localNotification.alertAction = @"升級";                localNotification.soundName = @"";                [application scheduleLocalNotification:localNotification];            }        });    }}

然后通過AppDelegate的回調(diào)函數(shù),判斷App的啟動方式是否是通過用戶點擊通知中心的升級提示來啟動,如果是,則跳轉(zhuǎn)到AppStore,示例代碼如下:

12345
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {    // open app store link    NSString * url = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/app/id%@", APP_STO
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
細(xì)說 iOS 消息推送
iOS下的Notification的使用
iOS本地推送通知UILocalNotification | // TODO:
ios xmpp開發(fā)應(yīng)用后臺模式接收聊天信息
最新版iOS13.7正式發(fā)布,值不值升級呢?這篇文章告訴你
iOS12.1.1正式版突然來襲!它都更新了什么?
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服