Как реализовать Share Share для проекта Xamarin.Forms - iOS? - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь реализовать расширение общего доступа к моему Xamarin.Forms приложению. И я следовал за этим:

https://docs.microsoft.com/tr-tr/xamarin/ios/platform/extensions

https://docs.microsoft.com/en-us/samples/xamarin/ios-samples/ios8-share/

https://github.com/xamarin/ios-samples/tree/master/ios8/Share

И git репо выше работает, когда я запускаю его. Но мне нужно реализовать это для моего проекта форм xamarin. Итак, я сделал следующие шаги:

1) Я щелкнул правой кнопкой мыши на своем решении для форм xamarin. После того как я выберу добавить, новый проект. И я создал проект «Share Extension (iOS)». (Я выбрал. Net Framework 4.7.2)

2) Проект расширения общего ресурса создается с ShareViewController. Я не делал никаких изменений.

3) Я открыл info.plist недавно созданного проекта ShareExtension. И я обратил внимание на идентификатор пакета. Например, идентификатор пакета моего проекта xamarin - «com.xamarin.test», а идентификатор пакета моего общего проекта расширения - «com.xamarin.test.share-extension»

4) Я выбрал MinimumOSVersion 10.0 моего основного проекта и мой общий ресурс.

5) В моем проекте NSExtension выглядит следующим образом:

> <key>NSExtension</key>
> <dict>
>   <key>NSExtensionAttributes</key>
>   <dict>
>       <key>NSExtensionActivationRule</key>
>       <dict>
>           <key>NSExtensionActivationSupportsFileWithMaxCount</key>
>           <integer>1</integer>
>           <key>NSExtensionActivationSupportsImageWithMaxCount</key>
>           <integer>1</integer>
>           <key>NSExtensionActivationSupportsMovieWithMaxCount</key>
>           <integer>1</integer>
>           <key>NSExtensionActivationSupportsText</key>
>           <false/>
>           <key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
>           <integer>1</integer>
>       </dict>
>   </dict>
>   <key>NSExtensionMainStoryboard</key>
>   <string>MainInterface</string>
>   <key>NSExtensionPointIdentifier</key>
>   <string>com.apple.share-services</string>
> </dict>

6) После того, как я очистил все решение и собрал заново, я добавил ссылку на dll проекта общего расширения в свой xamarin ios проект. После этого я запускаю проект. (на симуляторе iphone 7 ios 12.0)

Когда я открываю фотографии и нажимаю кнопку "Поделиться" для фотографии, я ожидаю увидеть свое приложение в меню "Поделиться". Но это не работает. Думаю, я пропустил шаг, но что это, я не знаю. Кто-нибудь, помогите мне, пожалуйста.

Ответы [ 2 ]

1 голос
/ 07 февраля 2020

Ваша проблема здесь:

После того, как я очистил все решение и собрал заново, я добавил ссылку на dll проекта общего расширения в свой проект xamarin ios.

В документе, когда говорится о требованиях к проекту приложения контейнера :

В нем должна быть ссылка на проект расширения.

Вы должны исправить нажмите xamarin ios project -> Add a reference -> Choose the shared extension project. То, что вы делаете, - это противоположный путь.

Поэтому удалите неправильную ссылку и добавьте новую ссылку, очистите и пересоберите решение, запустите снова.

Обновление:

enter image description here

0 голосов
/ 06 февраля 2020

Могут ли цели развертывания отличаться? Я добавил расширение Share, оно работало напрямую. Info.plist также выглядит правильно. Является ли цель развертывания iOS 12 +?

Редактировать: Первый ответ - ответ на другой вопрос. Давайте подумаем, как будто его никогда не существовало:)

...