Я использовал Objective Sharpie для создания полуфункциональной привязки iOS C # для API ближайших сообщений Google из двоичного файла libGNSMessages.a и заголовков в cocoapod NearbyMessages.Добавив эту библиотеку связывания в проект Xamarin.iOS, я могу создавать и получать доступ к объектам GMSMessage и GMSMessageManager.Когда я пытаюсь использовать GMSMessageManager.publishWithMessage (), я получаю это исключение, хотя я использую правильный тип аргумента:
Foundation.MonoTouchException: Objective-C exception thrown.
Name: NSInvalidArgumentException
Reason: NSConcreteMutableAttributedString initWithString:: nil value
Вот тестовый код, который я использую из FinishedLaunchingМетод в AppDelegate.cs (я проверил, менеджер и сообщение являются допустимыми экземплярами своего типа):
GNSMessageManager manager = new GNSMessageManager(apiKey);
GNSMessage message = GNSMessage.MessageWithContent(NSData.FromString("Hello"));
GNSPublication pub = manager.PublicationWithMessage(message);
Вот привязка из ApiDefinitions.cs в проекте привязки Visual Studio, на который он ссылается (комментарийсигнатура метода из исходного файла заголовка target-c):
// -(id<GNSPublication>)publicationWithMessage:(GNSMessage *)message;
[Export ("publicationWithMessage:")]
GNSPublication PublicationWithMessage (GNSMessage message);
А вот код в GNSMessageManager.g.cs (сгенерированный этим проектом Visual Studio), где вызывается исключение:
public virtual GNSPublication PublicationWithMessage (GNSMessage message)
{ ...
if (IsDirectBinding) {
return Runtime.GetNSObject<GNSPublication> (global::ApiDefinitions.Messaging.IntPtr_objc_msgSend_IntPtr (this.Handle, Selector.GetHandle ("publicationWithMessage:"), message.Handle));
}
... }
Режим отладки показывает, что все три из этих аргументов, по крайней мере, не равны нулю.
Это то же самое исключение: 'NSConcreteMutableAttributedString initWithString :: nil value' при использовании Google Nearby Messages .Однако эта ошибка предположительно исправлена, и современные CocoaPods, которые я использовал в качестве основы для привязки Sharpie, прекрасно работают, когда я создаю тестовый быстрый проект в XCode, поэтому мое связывание, вероятно, является виновником.Есть также более старая двоичная библиотека C # NearbyMessages, включенная в NearbyMonkey , которую я пытался использовать, но она терпит крах с текущими версиями iOS.
Спасибо, что нашли время, чтобы прочитать это далеко.Любая помощь или предложения, которые вы могли бы предложить, будут очень благодарны.