Пытаясь реализовать новый Snapchat Creative Kit в Xamarin.iOS, я связал SDK-фрейм с помощью Objective Sharpie. Следуя официальной документации (в которой есть только шаги по реализации swift и obj-c) для других SDK, проблем не возникло - я успешно реализовал Login Kit - я наткнулся на этот код, пытаясь отправить контент в Snapchat.
В частности, в Документации , для отправки содержимого в API используется этот код:
// swift
let snapImage = /* Set your image here */
let photo = SCSDKSnapPhoto(image: snapImage)
let snap = SCSDKSnapPhotoContent(snapPhoto: photo)
let api = SCSDKSnapAPI(content: snap)
api.startSnapping({ (error: Error?) in
/* Error handling */
})
Согласно документам,
SCSDKPhotoSnapContent является реализацией протокола SCSDKSnapContent. Он предоставляет возможность смоделировать фотоснимок для отправки в Snapchat.
Вот моя реализация на C #:
var snapImage = GetCurrentScreenImage();
SCSDKSnapPhoto photo = new SCSDKSnapPhoto(snapImage);
SCSDKPhotoSnapContent snapPhoto = new SCSDKPhotoSnapContent(photo)
SCSDKSnapAPI api = new SCSDKSnapAPI(snapPhoto);
api.StartSnappingWithCompletionHandler((NSError error) =>
{
// Error handling
});
Проблема в том, что конструктор SCSDKSnapAPI принимает только SCSDKSnapContent, который является абстрактным классом, а не его реализацией, и я получаю сообщение об ошибке:
CS1503 Аргумент 1: невозможно преобразовать из 'SCSDKCreativeKit_Bindings.SCSDKPhotoSnapContent' в 'SCSDKCreativeKit_Bindings.SCSDKSnapContent'
EDIT:
ApiDefinition.cs
[Export("initWithContent:")]
IntPtr Constructor(SCSDKSnapContent content);
Я попытался добавить еще один конструктор, подобный этому:
[Export("initWithContent:SCSDKPhotoSnapContent")]
IntPtr Constructor(SCSDKPhtotoSnapContent content);
Код теперь создается, но я получаю следующий код ошибки от Snapchat при обратном вызове:
SnapEncryptionMetadataUnexpectedStatusCode