踩坑記錄(檢索關(guān)鍵字:怎么分享備忘錄,備忘錄內(nèi)容分享到app,iOS 備忘錄開發(fā))
參考資料:
入門參考資料:
基本資料(了解什么是Share Extension):
http://www.itdecent.cn/p/863ce6729455
錯(cuò)誤集錦:
1:如何讓App Extension訪問(wèn)Cocoapods引入的第三方庫(kù):
https://blog.csdn.net/tounaobun/article/details/42218201
2:編譯報(bào)錯(cuò)(Cycle details)
https://stackoverflow.com/questions/50709330/cycle-inside-building-could-produce-unreliable-results-xcode-10-error/51052891
參考答案
1:In Xcode, go to File->Project/Workspace settings.
2:Change the build system to Legacy Build system.
3:第三庫(kù)報(bào)錯(cuò)
在TARGETS找到Extension,在對(duì)應(yīng)的General找到Linked Frameworks and Libraries 導(dǎo)入對(duì)應(yīng)的第三方庫(kù)
4:備忘錄沒(méi)有出現(xiàn)自己的App
參考資料:
https://developer.apple.com/library/archive/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html
https://stackoverflow.com/questions/29546283/ios-share-extension-how-to-support-wav-files
如果對(duì)于圖片,音視頻,網(wǎng)頁(yè)等這種單獨(dú)文件分享可以根據(jù)蘋果給出的參考代碼來(lái)支付分享到自己的App,可以參考
文章最開始的鏈接,里面有相應(yīng)的Info.plist截圖,這里只討論備忘錄的分享
在最開始的時(shí)候看了很多開發(fā)文檔和資料,沒(méi)找到如何讓備忘錄也出現(xiàn)自己的App.這時(shí)候就想備忘錄是蘋果的應(yīng)用,那應(yīng)該是data類的,經(jīng)測(cè)試確實(shí)可以在備忘錄分享出現(xiàn)自己的App.
NSExtensionActivationRule修改為String,復(fù)制下面的代碼
SUBQUERY (
extensionItems,
$extensionItem,
SUBQUERY (
$extensionItem.attachments,
$attachment,
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.data"
).@count == $extensionItem.attachments.@count
).@count >= 1
說(shuō)明:這段代碼是參考蘋果文檔的代碼,具體請(qǐng)參考下面蘋果文檔:
頁(yè)面檢索關(guān)鍵詞:complex or more specific filtering,
5:延伸資料:
以下是蘋果給出的TypeIdentifiers:
https://developer.apple.com/library/archive/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html
如果想要在多個(gè)文件格式中分享出現(xiàn)自己的App,可以參考蘋果給的TypeIdentifiers再按照蘋果給的過(guò)濾語(yǔ)法拼寫即可
6:一些錯(cuò)誤解決辦法
1:上傳到App Store的時(shí)候要把Share Extension的Version,Build設(shè)置跟主App一致
2:上傳App Store出錯(cuò)誤:ERROR ITMS-90206:"Invalid Bundle. The bundle at 'XXX.appex' contains disallowed file 'Frameworks'."
解決辦法:
TARGETS->主App->Build Settings->搜索Always Embed Swfit Standard Librarise 設(shè)置為YES
TARGETS->Share Extension->Build Settings->搜索Always Embed Swfit Standard Librarise 設(shè)置為NO
實(shí)在不行,可以去Stack Overflow搜索此問(wèn)題