簡體   English   中英

為什么在我調用發布/訂閱方法時,我的NeighborsMessages Objective-C與C#綁定會引發NSInvalidArgumentException?

[英]Why does my NearbyMessages Objective-C to C# binding throw an NSInvalidArgumentException when I call publish/subscribe methods?

我已經使用Objective Sharpie從libGNSMessages.neighborsMessages cocoapod中的二進制文件和標頭為Google的 Neighbours Messages API生成了半功能iOS C#綁定。 將綁定庫添加到Xamarin.iOS項目中,我可以創建和訪問GMSMessage和GMSMessageManager對象。 但是,當我嘗試使用GMSMessageManager.publishWithMessage()時,即使使用了正確的參數類型,也會出現此異常:

Foundation.MonoTouchException: Objective-C exception thrown.  
Name: NSInvalidArgumentException 
Reason: NSConcreteMutableAttributedString initWithString:: nil value

這是我在AppDelegate.cs的FinishedLaunching方法中使用的測試代碼(我檢查過,manager和message都是其類型的有效實例):

  GNSMessageManager manager = new GNSMessageManager(apiKey);
  GNSMessage message = GNSMessage.MessageWithContent(NSData.FromString("Hello"));
  GNSPublication pub = manager.PublicationWithMessage(message);

這是它所引用的Visual Studio綁定項目中ApiDefinitions.cs的綁定(注釋是原始Objective-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));
        }
    ... }

調試模式顯示所有這三個參數至少為非空。

使用Google附近消息時,這里是相同的例外: 'NSConcreteMutableAttributedString initWithString :: nil value' 但是,據稱該錯誤已修復,當我在XCode中構建測試Swift項目時,我用作Sharpie綁定基礎的最新CocoaPods效果很好,因此綁定可能是罪魁禍首。 我嘗試使用的NearestMonkey中還包含一個較舊的二進制C#NearestMessages庫,但該庫在當前的iOS版本中崩潰了。

感謝您抽出寶貴的時間閱讀本文。 您所能提供的任何幫助或建議將不勝感激。

好的,幾個月后,我終於弄清楚出了什么問題。

Google附近的pod分發了一個Resources文件夾-xcassets,一些本地化的東西,所有與顯示相關的東西-我沒有包含在綁定項目中。 當附近嘗試訪問這些圖像等以顯示權限提示時,觸發了錯誤。 將這些資源復制到我的Xamarin.iOS項目中可修復該錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM