我見過一個叫做CopyTranslate的iPhone應用程序。當我們複製某些內容時在safari中,它可以翻譯我們通過本地通知複製的內容。iOS應用程序可以在後臺獲取UIPasteboardChangedNotification嗎?
所以我想知道如果應用程序即使在後臺也可以接收UIPasteboardChangedNotification。然後我做了一個測試,建立一個可以在後臺運行10分鐘的應用程序,並觀察UIPasteboardChangedNotification。結果是該應用程序無法在後臺獲取通知。
任何人都可以有如何CopyTranslate如何實現其功能的想法?它每秒鐘檢查UIPasetBoard嗎?如果是這樣,它如何知道有一個新的字符串副本,而不是圖像副本或其他東西。
謝謝你的任何想法!
我已經通過檢查背景中每秒UIPasteboard的changeCount來解決了這個問題。
下面是詳細介紹:
我持有的AppDelegate屬性lastChangeCount,當我的應用程序進入後臺,我開始一個無限while循環,其睡眠每次迭代1秒。我會比較每次迭代的UIPasteboard的changeCount和lastChangeCount,如果它們不相等,那麼我知道在粘貼板中有一些新的粘貼項目。所以我會得到UIPasteboard的字符串屬性,如果它存在,我會安排一個本地通知來顯示它。如果沒有,我的意思是用戶可能會複製一張圖片或其他東西,所以我什麼都不會做。
你能在背景中保持循環運行多久? –
10分鐘@AllenHsu –
然後我認爲這不是一個好的解決方案。用戶不知道他們複製的時間和字符串將被翻譯。 –