Artwork

内容由一三、波肥提供。所有播客内容(包括剧集、图形和播客描述)均由 一三、波肥 或其播客平台合作伙伴直接上传和提供。如果您认为有人在未经您许可的情况下使用您的受版权保护的作品,您可以按照此处概述的流程进行操作https://zh.player.fm/legal
Player FM -播客应用
使用Player FM应用程序离线!

29: 來做 Side Project 系列之好用的搜尋功能

57:12
 
分享
 

Manage episode 281133405 series 2603883
内容由一三、波肥提供。所有播客内容(包括剧集、图形和播客描述)均由 一三、波肥 或其播客平台合作伙伴直接上传和提供。如果您认为有人在未经您许可的情况下使用您的受版权保护的作品,您可以按照此处概述的流程进行操作https://zh.player.fm/legal

搜尋是 app 常有的功能。本集來聊怎麼把搜尋的體驗做好一些呢?Bonus 則是探討如何讓 app 支援 iOS Spotlight Search,提高使用者回流的機會。

{ 完整節目筆記 https://weakself.dev/episodes/29 }

開場閒聊做 UI 的另類方法

聊了 13 在嘗試用 userflow unit tests + SwiftUI preview 的 UI 另類開發方式。

搜尋外部資料

很多 app 有資料搜尋的功能,大致上可以分成搜尋外部資料、過濾內部資料兩種。先說第一種:

  • 要打遠端 API 或從區網取得資料
  • 限制 query 頻率,不能隨打即找
  • 考慮不可控的回應時間
  • 捨棄已經不符合目前搜尋條件的結果
  • API 可以提供搜尋建議
  • Debounce vs throttle

過濾內部資料

  • 直接讀取裝置上的資料庫
  • 效能可控,幾乎可以一邊打字一邊顯示結果
    也是要測量
  • 沒有 API,所以自己保留搜尋條件的歷史
    保留搜尋條件變成資料入口,曾是 Evernote 的特色之一
    要能夠清除搜尋歷史
    更好的話是讓使用者能關掉這個功能,因為不是每個人都喜歡留下記錄
    如果是靜態資料,可以 cache 搜尋結果

搜尋介面實作

  • 通常搜尋結果會是列表,所以可能是 UITableView 放在 UINavigationController 裡面
  • 用 UISearchController,是把搜尋框「藏」在 navigation bar,往下捲動時搜尋框會看不到。如果搜尋功能真的很少用到的話還算可以考慮。效果可以參考系統設定的搜尋功
  • 如果搜尋是重要入口的話,還是傳統方法把 UISearchBar 放在 navigationItem.titleView 比較簡單實際,bug 也比較少…

支援 iOS 搜尋

除了 app 內的搜尋以外,也可以支援 iOS 的搜尋。有幾個方法:

  1. NSUserActivity 把使用者操作過的動作,或是點開過的項目加到 index
    這個有做沒有壞處,還可以順便支援 HandoffSiri Shortcuts 等等
  2. Core Spotlight framework 批次操作
    CS 的 index 是 private、on-device
    甚至可以做成 app extension
    甚至可以拿 CSSearchQuery 來做自己 app 的搜尋引擎。也就是 app 內與外都共用同一個 index 跟搜尋引擎(但我沒有這樣做過)
  3. 如果有內容相通的網站,可以寫 web markup 來支援 Applebot 爬蟲
    適用於公開資料
    支援 Twitter Cards 與 Facebook 的 App Links 標準
    如果網站想要導流到 app 的話,可以搭配 Universal Links 和 Smart Banner 一起規劃
    App Search API Validation Tool

詳情都可以查看 App Search Programming Guide。但是這份文件已經很久沒更新,放在 Archive。

講起來好像很複雜,但是加個 NSUserActivity 沒有幾行程式碼。

更多 weak self

  continue reading

110集单集

Artwork
icon分享
 
Manage episode 281133405 series 2603883
内容由一三、波肥提供。所有播客内容(包括剧集、图形和播客描述)均由 一三、波肥 或其播客平台合作伙伴直接上传和提供。如果您认为有人在未经您许可的情况下使用您的受版权保护的作品,您可以按照此处概述的流程进行操作https://zh.player.fm/legal

搜尋是 app 常有的功能。本集來聊怎麼把搜尋的體驗做好一些呢?Bonus 則是探討如何讓 app 支援 iOS Spotlight Search,提高使用者回流的機會。

{ 完整節目筆記 https://weakself.dev/episodes/29 }

開場閒聊做 UI 的另類方法

聊了 13 在嘗試用 userflow unit tests + SwiftUI preview 的 UI 另類開發方式。

搜尋外部資料

很多 app 有資料搜尋的功能,大致上可以分成搜尋外部資料、過濾內部資料兩種。先說第一種:

  • 要打遠端 API 或從區網取得資料
  • 限制 query 頻率,不能隨打即找
  • 考慮不可控的回應時間
  • 捨棄已經不符合目前搜尋條件的結果
  • API 可以提供搜尋建議
  • Debounce vs throttle

過濾內部資料

  • 直接讀取裝置上的資料庫
  • 效能可控,幾乎可以一邊打字一邊顯示結果
    也是要測量
  • 沒有 API,所以自己保留搜尋條件的歷史
    保留搜尋條件變成資料入口,曾是 Evernote 的特色之一
    要能夠清除搜尋歷史
    更好的話是讓使用者能關掉這個功能,因為不是每個人都喜歡留下記錄
    如果是靜態資料,可以 cache 搜尋結果

搜尋介面實作

  • 通常搜尋結果會是列表,所以可能是 UITableView 放在 UINavigationController 裡面
  • 用 UISearchController,是把搜尋框「藏」在 navigation bar,往下捲動時搜尋框會看不到。如果搜尋功能真的很少用到的話還算可以考慮。效果可以參考系統設定的搜尋功
  • 如果搜尋是重要入口的話,還是傳統方法把 UISearchBar 放在 navigationItem.titleView 比較簡單實際,bug 也比較少…

支援 iOS 搜尋

除了 app 內的搜尋以外,也可以支援 iOS 的搜尋。有幾個方法:

  1. NSUserActivity 把使用者操作過的動作,或是點開過的項目加到 index
    這個有做沒有壞處,還可以順便支援 HandoffSiri Shortcuts 等等
  2. Core Spotlight framework 批次操作
    CS 的 index 是 private、on-device
    甚至可以做成 app extension
    甚至可以拿 CSSearchQuery 來做自己 app 的搜尋引擎。也就是 app 內與外都共用同一個 index 跟搜尋引擎(但我沒有這樣做過)
  3. 如果有內容相通的網站,可以寫 web markup 來支援 Applebot 爬蟲
    適用於公開資料
    支援 Twitter Cards 與 Facebook 的 App Links 標準
    如果網站想要導流到 app 的話,可以搭配 Universal Links 和 Smart Banner 一起規劃
    App Search API Validation Tool

詳情都可以查看 App Search Programming Guide。但是這份文件已經很久沒更新,放在 Archive。

講起來好像很複雜,但是加個 NSUserActivity 沒有幾行程式碼。

更多 weak self

  continue reading

110集单集

所有剧集

×
 
Loading …

欢迎使用Player FM

Player FM正在网上搜索高质量的播客,以便您现在享受。它是最好的播客应用程序,适用于安卓、iPhone和网络。注册以跨设备同步订阅。

 

快速参考指南