什么是最好的方法以及如何为应用程序设置配置文件?
我希望应用程序能够查看SD卡上的文本文件并选择它需要的某些信息?
我正在尝试将cocoapods移植到xamarin.
基于Objective C的cocoapods可以通过将其转换为静态库(.a)并随后将其转换为xamarin studio或visual studio中的绑定库来移植
但基于Swift的cocoapods无法转换为静态库,因此无法移植到xamarin.
但swift可以转换成动态框架,但我找不到任何方法将其移植到xamarin
有没有其他方法将基于swift的cocoapods或ios项目移植到xamarin?
我正在评估一个不包括VS集成的Xamarin Studio独立许可证 - 如果我错了,请纠正我.但我想知道是否可以使用Xamarin Studio进行iOS开发?我对Xamarin Evolve宣布的iOS设计器的新功能非常感兴趣,理想情况下它也适用于Windows.
如果答案是肯定的,怎么样?
我正在与客户端证书身份验证进行斗争.当服务器需要凭证(在这种情况下是证书)时,从NSURLConnection委托调用此方法:
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
Run Code Online (Sandbox Code Playgroud)
我想从文件加载证书,填写凭证并运行此方法:
[[challenge sender] useCredential:[self credential] forAuthenticationChallenge:challenge];
Run Code Online (Sandbox Code Playgroud)
但我不知道如何初始化(或填充)SecIdentityRef参数.这是我创建凭据的代码:
NSString *certPath = [[NSBundle mainBundle] pathForResource:@"certificate" ofType:@"cer"];
NSData *certData = [[NSData alloc] initWithContentsOfFile:certPath];
SecIdentityRef myIdentity; // ???
SecCertificateRef myCert = SecCertificateCreateWithData(NULL, (CFDataRef)certData);
[certData release];
SecCertificateRef certArray[1] = { myCert };
CFArrayRef myCerts = CFArrayCreate(NULL, (void *)certArray, 1, NULL);
CFRelease(myCert);
NSURLCredential *credential = [NSURLCredential credentialWithIdentity:myIdentity
certificates:(NSArray *)myCerts
persistence:NSURLCredentialPersistencePermanent];
CFRelease(myCerts);
Run Code Online (Sandbox Code Playgroud)
有人知道怎么解决吗?谢谢.
我终于找到了解决方案,但是这里出现了一个新问题:
我的客户端不会将证书发送到服务器.服务器请求证书后,应用程序运行此方法:
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
Run Code Online (Sandbox Code Playgroud)
并填写凭证(如上所述),但连接以错误结束:NSURLErrorDomain -1206.根据服务器日志,应用程序不会发送客户端证书.
有没有人有这种行为的经验?我是否需要以某种方式验证应用程序中的证书?或其他任何使其有效的方法?如果它有帮助,我可以提供我当前的代码.谢谢你的任何想法......
我有一个应用程序,提供安装CA证书的选项,它存储在可信凭据的用户选项卡中,它按预期工作.
仅供参考 (这是我安装证书的方式):
Intent installIntent = KeyChain.createInstallIntent();
javax.security.cert.X509Certificate x509 = javax.security.cert.X509Certificate.getInstance(caRootCertBytes);
installIntent.putExtra(KeyChain.EXTRA_CERTIFICATE, x509.getEncoded());
installIntent.putExtra(KeyChain.EXTRA_NAME,caRootCertName);
startActivity(installIntent);
Run Code Online (Sandbox Code Playgroud)
如果卸载了应用程序,则证书仍保留在受信任的凭据中.
我希望在卸载应用程序时卸载证书.
我想过使用deleteEntry方法删除证书KeyStore.
仅供参考 (我没有测试过.希望它能够正常工作......我测试后会更新)
javax.security.cert.X509Certificate x509 = javax.security.cert.X509Certificate.getInstance(caRootCertBytes);
KeyStore ks = KeyStore.getInstance("AndroidCAStore")
if (ks != null)
{
ks.load(null, null);
Enumeration<String> aliases = ks.aliases();
while (aliases.hasMoreElements())
{
String alias = (String) aliases.nextElement();
java.security.cert.X509Certificate cert = (java.security.cert.X509Certificate) ks.getCertificate(alias);
String name = x509.getIssuerDN().getName();
if (cert.getIssuerDN().getName().contains(name))
{
ks. deleteEntry(alias)
}
}
}
Run Code Online (Sandbox Code Playgroud)
即使你考虑上面的代码工作AFAIK我无法注册广播接收器卸载我自己的应用程序.
在卸载我的应用程序时,如何删除我的应用程序安装的证书?
任何帮助表示赞赏!
我是使用SUSE 11 Linux的Eclipse(Juno)的新用户,我正在寻找指定用户定义的字典,以便我可以在我的Qt项目中停止显示拼写错误的所有"Trolltech"和"Qt"引用,没有关闭所有拼写检查.
我在网上找到了以下说明,我选择了Window | 偏好| 编辑| 文字编辑| 拼写并获取包含指定用户定义字典的字段的面板.我收集所有这些需求,是一个文本文件.我为此尝试了两种变体:
作为根,
我在这一点上,在每种情况下,
当我重新启动IDE并返回Window |时 首选项等,面板显示我指定AS指定的字典文本文件,但似乎没有IDE的功能识别.
令我高兴的是,当我将鼠标悬停在任何"错误"之上时,我想停止查看,我没有得到将错误词添加到字典中的快速修复选项,因为上周我勾选了选项说"如果不存在字典,请不要提示添加到字典".似乎没有任何字典被识别为现有字典.
谁能告诉我我错过了什么,在这里?
我以编程方式安装了证书.
我可以通过去手动卸载它 Settings -> Security -> Trusted Credentials -> User -> Choose the certificate and click the remove button
我想以编程方式删除证书.
这是我尝试过的代码,但它没有用.
javax.security.cert.X509Certificate x509 = javax.security.cert.X509Certificate.getInstance(caRootCertBytes);
KeyStore ks = KeyStore.getInstance("AndroidCAStore")
if (ks != null)
{
ks.load(null, null);
Enumeration<String> aliases = ks.aliases();
while (aliases.hasMoreElements())
{
String alias = (String) aliases.nextElement();
java.security.cert.X509Certificate cert = (java.security.cert.X509Certificate) ks.getCertificate(alias);
String name = x509.getIssuerDN().getName();
if (cert.getIssuerDN().getName().contains(name))
{
ks. deleteEntry(alias)
}
}
}
Run Code Online (Sandbox Code Playgroud)
参考我为什么选择deleteEntry
这是我得到的错误日志
05-19 18:27:40.789: W/System.err(14588): java.lang.UnsupportedOperationException
05-19 18:27:40.792: W/System.err(14588): at com.android.org.conscrypt.TrustedCertificateKeyStoreSpi.engineDeleteEntry(TrustedCertificateKeyStoreSpi.java:82)
05-19 18:27:40.792: W/System.err(14588): …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来找到Android设备的unique_id.
我将在登录请求有效负载中使用Id,因为我的应用程序是基于许可证的服务应用程序,Id在正常情况下不应更改.
在iOS中,有一些针对iOS的唯一ID解决方案,例如CFUUID或者identifierForVendor,以及Keychain,广告标识符等,可以完成预期的工作.
但在Android中,我所知道的所有选项似乎都有漏洞.
IMEI:
TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String m_deviceId = TelephonyMgr.getDeviceId();
Run Code Online (Sandbox Code Playgroud)
缺点
这是依赖SIM卡的
如果没有SIM卡那么我们就注定了
如果有双卡,那么我们就会陷入困境
Android_ID:
String m_androidId = Secure.getString(getContentResolver(), Secure.ANDROID_ID);
Run Code Online (Sandbox Code Playgroud)
缺点
WLAN MAC地址
WifiManager m_wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);
String m_wlanMacAdd = m_wm.getConnectionInfo().getMacAddress();
Run Code Online (Sandbox Code Playgroud)
缺点
蓝牙地址:
BluetoothAdapter m_BluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
String m_bluetoothAdd = m_BluetoothAdapter.getAddress();
Run Code Online (Sandbox Code Playgroud)
缺点:
我认为有两种方法可以解决这个问题
我们通过哈希时间戳生成一个随机ID,我用上面提到的唯一ID并存储它,以便下次登录时我们将检查key的存储值是否为null,如果是,那么我们将生成并存储它我们' ll使用密钥的值.
如果有相当于iOS的钥匙串的东西,那么我们对这种方法很好.
找到类似于iOS的advertisingIdentifier的全局标识符,该标识符对于设备中的所有应用程序都是相同的.
任何帮助表示赞赏!
我的项目中有两个Objective C和SwiftPod.
pod 'WBWebViewConsole', '~> 1.0.1'
use_frameworks!
pod 'XWebView', '~>0.9.5’
pod 'Starscream', '~> 1.1.3'
Run Code Online (Sandbox Code Playgroud)
由于swift POD(XWebView,Starscream)只能作为框架添加,我必须使用 use_frameworks!
但这使得所有POD都成为框架,包括Objective-C POD(WBWebViewConsole).
但它会导致Objective-C POD出现问题,但我不打算将Objective-C POD作为框架.
那么无论如何我可以忽略几个POD被转换为框架?
谢谢.
如何重现这个问题?
问题出在POD WBWebViewConsole上
在任何具有互联网连接的iOS 8+设备中运行附加项目,因为它从谷歌驱动器加载html文档.
在html doc中...单击General/Info/Warning/Debug/Error Log
只要你点击上面的任何按钮,你就会在html页面上出现一些文字....
该库是关于捕获在html页面中生成的日志...
每当你点击按钮而不是在html页面中显示一些文本时我会在背景中写一些日志.
现在点击按钮获取日志 ...并在Xcode IDE中查看日志...您将看到在html中生成的所有控制台日志
获取日志 - >是一个超级强加于webview的本机按钮.该库让我们从wkwebview读取控制台日志.
现在在POD你取消注释以下几行
use_frameworks!
pod 'PLCrashReporter'
pod 'XWebView', '~> 0.9.5’
Run Code Online (Sandbox Code Playgroud)
并做pod安装
然后将以下代码粘贴到ViewController之上
import WBWebViewConsole
Run Code Online (Sandbox Code Playgroud)
这是一个项目,所有这些都没有注释重现问题所需的所有更改
现在你在设备上运行项目并单击html页面中的一些按钮并单击获取日志,你看不到在html页面中生成的注释
具体来说,WBWKWebView中实现的委托方法不会被解雇.
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void …Run Code Online (Sandbox Code Playgroud) 至今:
我找到了以下解决方案
广播接收器已从ICS弃用
这肯定会花费很多时间而且效率不高
这肯定会花费很多时间而且效率不高
即使根据网络连接不会花费太多时间,它也可能会有所不同
我的结论:
到目前为止,我发现的所有解决方案要么效率不高,要么不那么可靠.
我的问题:
如果VPN在Android设备中连接,那么android OS必须知道它.
是否有任何公共的android框架API来读取它,因为在本地查找是最有效和最可靠的解决方案?
有没有其他有效和可靠的方法来实现它(比如将C或C plus plus库与NDK集成)?
注意:
我也找不到OpenVPN for Android的任何自定义广播发件人/ AIDL
android ×5
c# ×2
cocoapods ×2
ios ×2
java ×2
swift ×2
xamarin ×2
xamarin.ios ×2
aidl ×1
android-ndk ×1
bluetooth ×1
certificate ×1
dictionary ×1
eclipse-juno ×1
iphone ×1
keystore ×1
mac-address ×1
objective-c ×1
ssl ×1
suse ×1
uninstall ×1
vpn ×1
wif ×1