Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 47

0
votes
answers
27 views
+10

Visual Studio for Mac從Info.plist中剝離軟件包顯示名稱(CFBundleDisplayName)

0

我有一個Xamarin.iOS項目,它利用Info.plist中的CFBundleNameCFBundleDisplayName屬性。Visual Studio for Mac從Info.plist中剝離軟件包顯示名稱(CFBundleDisplayName)

當我在Visual Studio for Mac中打開我的項目,然後打開Info.plist時,CFBundleDisplayName屬性在沒有授權的情況下被剝離。我可以在Source模式下成功編輯Info.plist以將其追加回來,但有沒有更好的方法來解決這個問題?

+0

@ColeXia對不起,我真的不明白你的答案。每當我需要在VS for Mac中打開Info.plist時,如何避免「CFBundleDisplayName」的剝離? –

+0

編輯完後你忘了保存嗎?它在我身邊運作良好。 –

+0

@ColeXia什麼工作正常?你有沒有讀過我的問題? –

沙发
0
0

在Visual Studio for Mac 7.3.2版中,問題不會再現。

0
votes
answers
27 views
+10

Xamarin.iOS應用程序在丟失Mono運行時時崩潰;找不到合適的圖像;代碼簽名被阻止的mmap

1

我試圖用iOS的關聯應用程序擴展來構建Xamarin Forms應用程序。我的解決方案的結構是這樣的:Xamarin.iOS應用程序在丟失Mono運行時時崩潰;找不到合適的圖像;代碼簽名被阻止的mmap

MyProject 
    BitThicket.MyProject     -- Forms project 
    BitThicket.MyProject.Core    -- NET Standard 2.0 class library 
    BitThicket.MyProject.iOS    -- iOS project 
    BitThicket.MyProject.Extensions.Intents -- Intents project 

每個項目從模板創建的,我做了一些變化 - 和崩潰發生在啓動,因此沒有達到我的代碼反正。

我針對iOS 11.1,並且設置了有效的簽名證書和配置文件。我能夠構建應用程序並從Visual Studio for Mac(7.2.2)將它部署到設備(我的iPhone 7+)。但是,當調試器嘗試爲我啓動應用程序時,顯示空白的初始視圖,然後應用程序崩潰。調試器從不連接。順便說一句,當應用程序在設備上手動啓動時,它會以同樣的方式崩潰。

我檢索使用Xcode中設備日誌和崩潰是這樣的:

Incident Identifier: 948709A2-74AA-4E16-BEEA-072CFCF4AB38 
CrashReporter Key: ###################################### 
Hardware Model:  iPhone9,2 
Process:    BitThicket.Turns.iOS [2457] 
Path:    /private/var/containers/Bundle/Application/#####-##############-############/BitThicket.Turns.iOS.app/BitThicket.Turns.iOS 
Identifier:   com.bitthicket.Turns 
Version:    1.0 (1.0) 
Code Type:   ARM-64 (Native) 
Role:    Foreground 
Parent Process:  launchd [1] 
Coalition:   com.bitthicket.Turns [818] 


Date/Time:   2017-11-24 09:41:15.3743 -0600 
Launch Time:   2017-11-24 09:41:15.3041 -0600 
OS Version:   iPhone OS 11.1.2 (15B202) 
Baseband Version: 3.21.01 
Report Version:  104 

Exception Type: EXC_CRASH (SIGABRT) 
Exception Codes: 0x0000000000000000, 0x0000000000000000 
Exception Note: EXC_CORPSE_NOTIFY 
Termination Description: DYLD, Library not loaded: @rpath/Mono.framework/Mono | Referenced from: /var/containers/Bundle/Application/########-####-####-####-############/BitThicket.Turns.iOS.app/BitThicket.Turns.iOS | Reason: no suitable image found. Did find: | /private/var/containers/Bundle/Application/########-####-####-####-############/BitThicket.Turns.iOS.app/Frameworks/Mono.framework/Mono: code signing blocked mmap() of '/private/var/containers/Bundle/Application/########-####-####-####-############/BitThicket.Turns.iOS.app/Frameworks/Mono.framework/Mono' 
Triggered by Thread: 0 

Filtered syslog: 
None found 

Thread 0 Crashed: 
0 dyld       0x0000000106722f1c __abort_with_payload + 8 
1 dyld       0x00000001067226f4 abort_with_payload_wrapper_internal + 100 
2 dyld       0x0000000106722720 fcntl + 0 
3 dyld       0x00000001066f8498 dyld::fastBindLazySymbol+ 17560 (ImageLoader**, unsigned long) + 0 
4 dyld       0x00000001066fb714 dyld::_main+ 30484 (macho_header const*, unsigned long, int, char const**, char const**, char const**, unsigned long*) + 7376 
5 dyld       0x00000001066f521c _dyld_start + 68 

Thread 0 crashed with ARM Thread State (64-bit): 
    x0: 0x0000000000000006 x1: 0x0000000000000001 x2: 0x000000016d50a470 x3: 0x00000000000000a5 
    x4: 0x000000016d50a070 x5: 0x0000000000000000 x6: 0x0000000000000000 x7: 0x00000000000002f0 
    x8: 0x0000000000000020 x9: 0x0000000000000009 x10: 0x6f6e6f4d2f736b72 x11: 0x6f77656d6172662e 
    x12: 0x726f77656d617246 x13: 0x2e6f6e6f4d2f736b x14: 0x726f77656d617266 x15: 0x00276f6e6f4d2f6b 
    x16: 0x0000000000000209 x17: 0x000000008000001f x18: 0x0000000000000000 x19: 0x0000000000000000 
    x20: 0x000000016d50a070 x21: 0x00000000000000a5 x22: 0x000000016d50a470 x23: 0x0000000000000001 
    x24: 0x0000000000000006 x25: 0x00000001028f4000 x26: 0x0000000106736000 x27: 0x0000000106735f88 
    x28: 0x000000016d50ba70 fp: 0x000000016d50a040 lr: 0x00000001067226f4 
    sp: 0x000000016d50a000 pc: 0x0000000106722f1c cpsr: 0x00000000 

Binary Images: 
0x1028f4000 - 0x103e43fff BitThicket.Turns.iOS arm64 <###########################> /var/containers/Bundle/Application/########-####-####-####-############/BitThicket.Turns.iOS.app/BitThicket.Turns.iOS 
0x1066f4000 - 0x106733fff dyld arm64 <##########################> /usr/lib/dyld 

EOF 

有誰知道是什麼原因造成的?在Xamarin論壇或其他地方似乎沒有很多直接的答案(包括SO,不幸)。我已經嘗試了一些簡單的東西,比如重新啓動Visual Studio for Mac,或者從我的設備中刪除應用程序並清理/重建解決方案,但這些東西似乎沒有幫助。

在終止描述中,它聽起來像試圖加載單聲道,但mmap被代碼簽名以某種方式阻止 - 但我真的不知道如何。該應用程序構建並部署到我的設備,所以它看起來像代碼簽名正在工作。

沙发
0
1

經過深入挖掘,我發現了幾個似乎相似的問題示例,最常見的方法似乎是簽名證書配置不正確。我仍然對其根本原因感到好奇 - 爲什麼背後是「爲什麼」。最終,我發現我在「系統」「登錄」鑰匙鏈上都有「Apple全球開發者關係證書頒發機構」,並且在「應始終信任」時配置爲「始終信任」只在我的「登錄」鑰匙串中進行配置,並配置爲「系統默認值」。

一旦我糾正了這些問題,我又試了一次,但仍然遇到了問題。它在重新啓動我的Mac之後終於消失了。

+0

感謝你們這樣做,這發生在我對我的應用程序使用自動簽名後,重新啓動(並且乾淨,雖然不確定如果需要)做了生意! :) – WickedW

0
votes
answers
27 views
+10

什麼項目類型可以引用.NET程序集,並可以通過iOS Xamarin應用程序引用

1

我正在尋找一些幫助來正確設置我的Visual Studio for Mac項目。我是新來的Visual Studio Mac,並會欣賞沿着正確的道路推。什麼項目類型可以引用.NET程序集,並可以通過iOS Xamarin應用程序引用

我有一個大型的類庫,最初是在Windows上的visual studio 2017中開發的。我想使用大部分代碼來開發iOS應用程序。這個類庫要求引用:

  • 系統
  • System.Runtime.Serialization
  • System.ServiceModel
  • System.ServiceModel.Web
  • 的System.Web。

我試圖將該代碼移植到Visual Studio for Mac中的可移植類庫中。但是,PCL不允許你引用上面的程序集(除非我錯過了某些東西)。

所以我然後將它移植到.NET庫項目(其他 - > .NET - >庫)項目。但是,我的iOS應用程序不允許引用該項目類型,因爲VS for Mac表示它有一個「不兼容的目標框架:.NETFramework,版本v4.6.1)。

我應該使用什麼樣的項目類型類庫,使其可以參考所需的.NET程序集,它可以從我的iOS應用程序引用

沙发
0
1

可能的選項:?

  1. 使用不同的便攜式類庫(PCL)簡介
  2. 使用.NET標準項目。
  3. 使用共享項目。

對於除System.Web以外的所有內容,都有PCL配置文件,其中包含您正在查找的程序集。您可以看到哪些組件都可以在Mac上通過查看PCL目錄:

/Library/Frameworks/Mono.framework/Versions/Current/lib/mono/xbuild-frameworks/.NETPortable

如果您在那裏打開一個終端窗口,您可以運行搜索,find . -name "System.ServiceModel.Web.dll"或使用Finder瀏覽文件夾以查找具有所需組件的PCL配置文件。

另一種可能性是使用.NET標準2.0項目,該項目有許多可用於Xamarin.iOS項目並被支持引用的程序集。您可能需要安裝一些其他System。* NuGet包來提供所需的程序集。

在.NET 2.0標準中可用的命名空間被記載:

https://docs.microsoft.com/en-us/dotnet/api/?view=netstandard-2.0

另一種選擇是使用共享的項目。這本身沒有程序集引用,但基本上是共享代碼,它被編譯到引用它的所有項目中。在這裏,您可以使用#ifdefs來處理任何iOS或Android特定的代碼。

0
votes
answers
33 views
+10

使用InAppBillingPlugin恢復購買

0

我目前使用James Montemagno的InAppBillingPlugin在我的應用程序中部署訂閱程序。使用InAppBillingPlugin恢復購買

它工作正常,但我需要在應用程序中進行恢復購買功能,我遇到了這個問題。

我遵循documentation上說明的過程,但是當我調用函數GetPurchaseAsync()時,我得到的Enumerable對象中沒有任何東西。

You can see the complete object in the picture

我與我的真實蘋果商店帳戶嘗試,我買了一個產品,在生產中的實際應用,並試圖與我在開發應用程序恢復我的購買。

如果有人知道我可以改正這一點,這將是非常有益的!

+0

當一個lib發生意想不到的事情時,我會做什麼,下載它的源代碼,包括我的項目,以完全調試內部發生的事情,以及爲什麼.. –

+0

當您在生產環境中購買時,您無法恢復購買開發。兩者都有單獨的InApp購買網址。 –

沙发
0
0

請勿使用您的真實Apple帳戶在開發環境中測試生產應用程序。它不會工作。
如果您想用開發環境測試您的應用程序內購買。請將您的Apple帳戶更改爲測試用戶帳戶並使用沙箱環境。關於如何創建應用程序自己的測試帳戶,您可以參考:Create a sandbox tester account
請注意,文本「[Environment:Sandbox]」作爲提示的一部分出現,表示您已連接到測試環境。有關如何檢索產品信息的更多詳細信息,請參閱here

+0

謝謝,我知道沙盒,我已經試過了,但枚舉購買只包含沒有任何PurchaseToken的購買,這就是爲什麼我嘗試與生產在應用程序購買... – nicar

+0

@nicar你可以嘗試分享一些關於您購買的產品,我認爲我們可以在沙盒中獲得我們需要的信息。 –

+0

我用來允許恢復購買的代碼: 'var purchases = await billing.GetPurchasesAsync(ItemType.InAppPurchase); 的foreach(在購買VAR購買) { 如果(purchase.PurchaseToken!= NULL)' 在最後的代碼「如果」永遠不會被調用,當我看在購買,我可以看到這一點:[購買可枚舉] (https://imgur.com/upIGZBs) 發送回來的所有對象都包含與TransactionDateUtc完全相同的事物,只有ID不同。這在沙箱中的購買是在不同的日子完成的,這是沒有意義的。 – nicar

0
votes
answers
45 views
+10

Rg.Plugins.Popup在Xamarin中單擊背景時未關閉。表格

0

我在我的應用程序中使用了rg.plugins.popup。我更新了xamarin表單(版本=「2.5.0.121934」)。現在外部背景被點擊,它沒有關閉。我曾經關閉彈出多種方式,但沒有關閉,我試了下面的代碼:Rg.Plugins.Popup在Xamarin中單擊背景時未關閉。表格

this.CloseWhenBackgroundIsClicked = false;

protected override bool OnBackgroundClicked() 
     { 
      Navigation.PopPopupAsync(); 
      return false; 
     } 

OnBackgroundClicked並沒有叫。如何解決這個問題?

+0

這是一個開源項目,爲什麼不在github上聯繫作者並直接提問?可能是因爲它已經是一個已知問題,請檢查github。 – EvZ

+0

我認爲我們可能需要看一些代碼來幫助您確定問題,請發佈您的'.xaml'文件代碼。 –

+0

大家好。我是這個圖書館的作者。我已經在最新的測試版中修復了它。你可以測試它。謝謝 – user1658602

沙发
0
2

我不明白,如果您知道正確的代碼是:this.CloseWhenBackgroundIsClicked = true;(不是false),但如果這不起作用,您可以嘗試一種解決方法,直到解決此問題。

基本上,添加一個Grid作爲PopupPage的根,並添加一個帶有TapGestureRecognizer的無色BoxView作爲Grid的子節點,然後添加實際內容作爲Grid的另一個子節點,並將TapGestureRecognizer的Tapped設置爲「BackgroundClicked」代碼。

希望它有幫助!

+0

是的,同樣的問題不得不做如上所述的東西。 –

0
votes
answers
32 views
+10

如何在Xamarin表單中創建半屏相機視圖

1

我想在半屏幕中顯示實時相機視圖,剩下的一半屏幕需要在Xamarin表單中插入一些控件。爲相機目的,我使用「Plugin.Media」;但插件會打開新的相機窗口。應該在iOS和Android上顯示相同的頁面。請建議我如何開發/設計此頁面。 或如何從此視圖創建任何自定義渲染器。如何在Xamarin表單中創建半屏相機視圖

Wireframe

沙发
0
1

你需要寫一個自定義呈現。

在PCL中創建基本的ContentPage或BasePage CameraView.xaml。

在你的Android項目,你需要創建攝像頭UI喜歡這裏

https://github.com/pierceboggan/Moments/blob/master/Moments%20-%20CSharp/Moments.Droid/Resources/layout/CameraLayout.axml

現在只寫喜歡這裏的渲染:

https://github.com/pierceboggan/Moments/blob/master/Moments%20-%20XAML/Moments.Droid/Pages/CameraPage.cs

同樣的步驟也適用於iOS只需使用https://github.com/pierceboggan/Moments進行學習。

板凳
0
1

您將需要自定義視圖渲染器來實現它。 的Xamarin形式官方文檔中有它的一個例子,你可以點擊這裏:https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/custom-renderer/view/

關於控制設計的其餘部分,則可以使用Xamarin窗體控件(按鈕,圖像等)

+0

做謝謝。 minis我需要創建唯一的相機視圖渲染器而不是整個頁面渲染器。 – sumeet

0
votes
answers
26 views
+10

如何有效地將值保存在OnPropertyChangedEvent中?

0

我正在實現MVVM並試圖從我的Xaml頁面的Switch中保存一個值。我想將這個值存儲到應用程序的屬性中。目前,我再次保存觸發器OnPropertyChanged的值,並且該值永遠不會更新。如何有效地將值保存在OnPropertyChangedEvent中?

我有一個BaseViewModel類:

public class BaseViewModel : INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged; 

    protected void OnPropertyChanged([CallerMemberName] string propertyName = null) 
    { 
     PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 
    } 

    protected void SetValue<T>(ref T backingField, T value, [CallerMemberName] string propertyName = null) 
    { 
     if (EqualityComparer<T>.Default.Equals(backingField, value)) 
      return; 

     backingField = value; 

     OnPropertyChanged(propertyName); 
    } 
} 

在我的ViewModel:

private bool _sizeToggled; 
public bool SizeToggled 
{ 
    get { return _sizeToggled; } 
    set 
    { 
     SetValue(ref _sizeToggled, value); 
     OnPropertyChanged(nameof(SizeToggled)); 
     SaveValue(); 
    } 
} 

private void SaveValue(){ 
Application.Current.Properties["SizeToggled"] = SizeToggled; 
} 

我的XAML代碼:

<StackLayout Orientation="Horizontal" Padding="10,0,0,0"> 
    <Label Text="Size:" FontAttributes="Bold"/> 
    <Switch IsToggled="{Binding SizeToggled}" 
         HorizontalOptions="EndAndExpand"/> 
</StackLayout> 

我如何能實現我的SaveValue()方法,當值更新時,應用程序的屬性將被存儲/更新?

+0

https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/application-class/#Persistence嘗試添加此'Application.Current.SavePropertiesAsync()' –

+0

添加此幫助,除了不同時保存多個屬性。謝謝! – Zithro

沙发
0
0

看起來在同時保存多個應用程序屬性時存在問題。 分離屬性出保存方法和

developer.xamarin.com/guides/xamarin-forms/...嘗試添加該Application.Current.SavePropertiesAsync() - 科爾夏

強制拯救解決了問題。

板凳
0
0

你是否檢查過虛擬機是否真的是你的datacontext?

+0

是的,我的BindingContext設置正確。更改完成後,我的斷點在ViewModel中正確觸發。當我調用SaveValue()方法時,問題是OnPropertyChanged被第二次觸發。 – Zithro

+0

您是否嘗試更改綁定模式? – user1032412

+0

是的,我試過OneWay,OneWayToSource和TwoWay。所有結果都一樣。 – Zithro

0
votes
answers
32 views
+10

在MainActivity中從webview調用javascript Xamarin

0

我試圖在主要活動中從webview調用javascript函數。這可以在我的自定義Render中調用,只需調用this.Element.Eval(「alert('')」)。在MainActivity中從webview調用javascript Xamarin

我無法調用FindViewById,因爲webview在Resouces.Id中不可用。

謝謝!

+0

你的WebView類型是什麼? 'Xamarin.Forms.WebView'或'Android.Webkit.WebView'? –

+0

你好,它是一個Xamarin.Forms.WebView –

沙发
0
0

Xamarin.forms.WebView提供Eval()方法從C#調用JavaScript,這裏是官方文檔:Call JavaScript from C#

我無法調用FindViewById,因爲webview在Resouces.Id中不可用。

使用x:Name命名在XAML你的控制,這樣的:

<WebView x:Name="webView" ... />

然後,你可以通過名字在後面的C#代碼中使用它,就像這樣:

webView.Eval (string.Format ("printMultiplicationTable({0}, {1})", number, end));

0
votes
answers
25 views
+10

PropertyChanged被觸發,但視圖未更新

0

我正在更改類構造函數中的標籤,它工作正常,標籤更新(「0」)。我也在嘗試更新標籤,當我點擊一個按鈕,但它不工作(「X」)。我注意到調試標籤值已更新,PropertyChanged被觸發,但視圖不會更改。PropertyChanged被觸發,但視圖未更新

public class HomeViewModel : ViewModelBase 
{ 
    string playerA; 
    public string PlayerA 
    { 
     get 
     { 
      return playerA; 
     } 
     set 
     { 
      playerA = value; 
      this.Notify("playerA"); 
     } 
    } 

    public ICommand PlayerA_Plus_Command 
    { 
     get; 
     set; 
    } 

    public HomeViewModel() 
    { 
     this.PlayerA_Plus_Command = new Command(this.PlayerA_Plus); 
     this.PlayerA = "0"; 
    } 

    public void PlayerA_Plus() 
    { 
     this.PlayerA = "X"; 
    } 
} 



public abstract class ViewModelBase : INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged; 

    protected void Notify(string propertyName) 
    { 
     if (this.PropertyChanged != null) 
      this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
    } 
} 
+1

在這裏寫下你的xaml。我的意思是按鈕和標籤+將[string platerA;]更改爲[string playerA =「!」;]如果您的標籤不顯示!畢竟,你的綁定有一個問題。 –

沙发
0
4

在您的PropertyChangedEventArgs中傳遞的參數的名稱是錯誤的。您正在使用「playerA」,但(public)屬性的名稱是「PlayerA」(大寫字母「P」)。更改this.Notify("playerA");this.Notify("PlayerA");甚至更??好:

Notify(nameof(PlayerA));

您可以完全擺脫加一個[CallerMemberName]attributeNotify()方法傳遞帕拉姆的名稱。

protected void Notify([CallerMemberName] string propertyName = null)

這可以讓你只需要調用Notify()無參數,會自動使用更改屬性的名稱。

+1

很高興提及'[CallerMemberName]'! –

0
votes
answers
29 views
+10

安裝IOS應用程序錯誤與設備在VS與Xamarin建設

0

我嘗試構建應用程序,在VS與Xamarin創建,以測試它在真正的設備上(在iPhoneSimulator它工作沒有問題)。我使用AdHoc生成所有需要的證書和規定(創建像Xamarin tutorial描述)。但是當我嘗試通過iTunes上傳IPA文件到設備時,它完成失敗。在iPhone上完成後,它會消失,在iPad上它會拋出「應用程序無法安裝」的錯誤信息。這兩款設備都已添加到配置文件中。配置文件已激活。 所有幫助將不勝感激安裝IOS應用程序錯誤與設備在VS與Xamarin建設

沙发
0
0

你可以找到一個更具描述性的原因,如果你打開「部署到設備」窗口

Menu -> View -> Pads -> Deploying to Device

+0

對不起,但我無法看到圖像託管的圖片。 –

+0

對不起,但還是不明白,這個菜單在哪裏,我需要打開? –

+0

@AdeptusMechanicus如果找不到它,請在頂部找到最右側的菜單(幫助),然後在那裏輸入「部署到設備」,它會告訴您它位於何處。 – Taier

板凳
0
0

問題解決了這種方式 - 複製的項目到Visual Studio的Mac,安裝在主機構建機器上,構建應用程序,將項目移回。現在應用上傳沒有問題。