我在设备上传我的应用时遇到错误.它会安装它但不能上传它.
另外我想在设备上运行仪器工具,但是当我运行它时什么也没显示.
任何人都面临同样的问题.
我试图找出一些关于"幕后"实现的一些事情,即直接从Apptimize或Optimizely上的Web控制台动态操作UI元素.
更具体地说,我想了解以下内容:
1)客户端代码(iOS)如何将视图层次结构发送到Web服务器,以便当您在Web仪表板上选择任何UI元素时,它立即显示在iOS客户端上?
我看到了FLEX,以及它如何设法获取视图层次结构,但我不明白iphone客户端如何"知道"在Web仪表板中选择哪个视图.
2)此外,在Apptimize中,我可以从Web仪表板中选择任何UI元素,更改其文本或颜色,它将立即在应用程序中更改.不仅如此,只需拥有SDK即可添加任何代码.
我所做的更改(文本,背景颜色等)将保留在应用程序的所有未来会话中.如何实施?
我猜他们正在使用某种反思,但他们怎样才能让它适用于所有用户以及所有未来的会话?客户端代码如何找到正确的UI元素?以及它如何在UITableViewCell上运行?
3)每次加载UIViewController都可以检测到吗?即在每个viewDidLoad上获得回调?如果是这样,怎么样?
看下面的一些截图:


我正在开发Iphone应用程序.我使用了Security/Security.h框架的SecKeyGeneratePair方法.我正在获取公钥和私钥作为SecKeyRef对象.我可以访问密钥或将其值打印到控制台吗?我可以从中获取NSString或NSData对象吗?当我使用NSLog将密钥打印到控制台时,我得到了.我们可以通过网络将这些关键对象传递给可能在java中的其他应用程序吗?我们可以加密iphone应用程序中的一些文本,将其发送到服务器,使用密钥发送解密服务器端的文本吗?
编辑添加 感谢Alex Reynolds的快速回复.在RSA加密的情况下,首先我必须生成一个SecKeyRef对象形式的密钥对.然后我们将该引用传递给SecKeyEncrypt和SecKeyDecrypt方法.当我在本地加密和解密时它工作正常但如果我尝试将密钥和加密数据发送到服务器并在服务器(java实现)端解密,我无法将SecKeyRef对象作为键值传递给服务器.在java中,我们必须以字符串或字节数组格式获取字符串以传递给加密方法.我们可以访问存储在对象SecKeyRef(NSCFType对象)中的数据吗?这是一个struct __SecKey.
我必须在UITableView中集成WKWebView(请不要质疑).
我确保WKWebView滚动被禁用,这样我就避免在可滚动视图(UITableView)中有可滚动视图.
但是,当WKWebview中的HTML内容很大时,让我们说两次屏幕,我发现屏幕下方的内容没有显示给用户,即当用户滚动表格视图时,只有白色\空屏幕,其中WKWebView是......
我根据以下内容更新了WebViewTableViewCell的高度:
public func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
let height = webView.scrollView.contentSize.height
...
...
delegate.updateWebViewCellHeight(height: self.cellHeight)
}
Run Code Online (Sandbox Code Playgroud)
我想这可能是WKWebView上的一些优化的结果,它允许它仅在屏幕上显示时才呈现DOM.
我的问题是,为了确保在滚动表格视图时向用户显示WKWebView中的所有内容,我该怎么办?
PS UIWebView渲染所有内容都很好,它似乎只在WKWebView中发生
见下图:
在每个iOS应用程序上都有一个app-delegate类,这意味着应用程序中的一个类必须实现应用程序事件的委托方法,例如didFinishLaunching等(通常类名称包含"appDelegate").
我的问题是:假设我想在不同的类中实现app-delegate方法,而不是原来的xcode为我决定的.我怎样才能做到这一点?
我能够使用下面的代码片段成功生成密钥对,但无法打印密钥......
函数SecKeyGeneratePair() - 以SecKeyRef类型返回键.
我不知道如何处理这种类型,我知道这是钥匙串表示,但我怎么能真正查看密钥对作为NSString?更具体地说,如何将SecKeyRef转换为NSString?
static const UInt8 publicKeyIdentifier[] = "com.apple.sample.publickey\0";
static const UInt8 privateKeyIdentifier[] = "com.apple.sample.privatekey\0";
// 1
- (void)generateKeyPairPlease
{
OSStatus status = noErr;
NSMutableDictionary *privateKeyAttr = [[NSMutableDictionary alloc] init];
NSMutableDictionary *publicKeyAttr = [[NSMutableDictionary alloc] init];
NSMutableDictionary *keyPairAttr = [[NSMutableDictionary alloc] init];
// 2
NSData * publicTag = [NSData dataWithBytes:publicKeyIdentifier
length:strlen((const char *)publicKeyIdentifier)];
NSData * privateTag = [NSData dataWithBytes:privateKeyIdentifier
length:strlen((const char *)privateKeyIdentifier)];
// 3
SecKeyRef publicKey = NULL;
SecKeyRef privateKey = NULL; // 4
[keyPairAttr setObject:(id)kSecAttrKeyTypeRSA …Run Code Online (Sandbox Code Playgroud) 首先,重要的是要注意我正在开发企业应用程序,因此不需要考虑App Store准则/批准.
我的目标是:
1)iPhone应用程序,用户只能打开一次.在这段时间里,他将经历一些注册过程.
2)一旦步骤(1)完成(通过app暂停或app关闭),应用程序应该每小时(或多或少)"唤醒"并从后台向服务器发送有关用户的一些数据(所有这些都是通过当然是用户协议).
我试过的可选解决方案
我非常仔细地阅读了Apple在后台运行的指南,网址是https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html
我决定使用2个UIBackgroundModes:
1)对于我使用的位置:
manager.requestAlwaysAuthorization()
为了确保我的应用程序将在"app close"甚至"设备重启"之后运行,我必须使用这两个选项.请参阅Apple指南:https: //developer.apple.com/library/ios/documentation/UserExperience/Conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html#//apple_ref/doc/uid/TP40009497-CH2-SW1
如果您使重要更改位置服务保持运行并且您的iOS应用程序随后被暂停或终止,则当新位置数据到达时,该服务会自动唤醒您的应用程序.
2)对于我使用的后台提取
performFetchWithCompletionHandler()
Run Code Online (Sandbox Code Playgroud)
和
UIApplication.sharedApplication().setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum);
Run Code Online (Sandbox Code Playgroud)
出于某种原因,应用程序在24小时后无法在后台运行.意味着应用程序永远不会再"唤醒",即使根据Apple指南,每当发生重大位置更新时 - 它都会被唤醒.
为了尽可能保证我的应用程序会在后台定期运行,我该怎么办?
我想离线使用SAXReader ,问题是SAXReader正在验证xml是否符合DTD.我不想更改XML中的DTD或其他任何内容.通过在本网站和其他来源搜索,我发现2个答案对我没有帮助:
我试图做的例子:
protected Document getPlistDocument() throws MalformedURLException,
DocumentException {
SAXReader saxReader = new SAXReader();
saxReader.setIgnoreComments(false);
saxReader.setIncludeExternalDTDDeclarations(false);
saxReader.setIncludeInternalDTDDeclarations(true);
saxReader.setEntityResolver(new MyResolver());
Document plistDocument = saxReader.read(getDestinationFile().toURI().toURL());
return plistDocument;
}
public class MyResolver implements EntityResolver {
public InputSource resolveEntity (String publicId, String systemId)
{
if (systemId.equals("http://www.myhost.com/today")) {
// if we want a custom implementation, return a special input source
return null;
} else {
// use the default behaviour
return null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
<?xml version="1.0" encoding="UTF-8"?> …Run Code Online (Sandbox Code Playgroud) 我想在Safari(iOS)或Chrome(Android)上运行JS代码来检测,例如,如果在设备上安装了WhatsApp.
我玩过:
和
https://github.com/hampusohlsson/browser-deeplink
但问题是如果应用程序安装在设备上 - 浏览器会重定向到应用程序.我希望在"检测阶段"之后留在页面上,是否有可能做到?
我正在尝试做一个非常简单的事情,只用一个按钮显示警报,如果点击我希望关闭对话框而不是应用程序退出\ finish()
目前我正在设备上获得通用警报:
应用程序意外停止.请再试一次
在LogCat中我得到:无法暂停活动
这是日志:
01-03 14:49:00.670: ERROR/AndroidRuntime(22536): Uncaught handler: thread main exiting due to uncaught exception
01-03 14:49:00.680: ERROR/AndroidRuntime(22536): java.lang.RuntimeException: Unable to pause activity {com.SprintTwo/com.SprintTwo.SprintTwo}: java.lang.NullPointerException
01-03 14:49:00.680: ERROR/AndroidRuntime(22536): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3162)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3119)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536): at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3102)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536): at android.app.ActivityThread.access$2400(ActivityThread.java:119)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1874)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536): at android.os.Handler.dispatchMessage(Handler.java:99)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536): at android.os.Looper.loop(Looper.java:123)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536): at android.app.ActivityThread.main(ActivityThread.java:4363)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536): at java.lang.reflect.Method.invokeNative(Native Method)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536): at java.lang.reflect.Method.invoke(Method.java:521) …Run Code Online (Sandbox Code Playgroud) 我正在尝试做一些非常基本的事情,我想从iPhone应用程序调用Twitter API,以便接收公共数据,例如某些用户的公共时间线.
我读了2个小时的Twitter Developer Doc,但仍然不明白我应该如何实现这个...
我不希望我的用户通过Twitter连接或验证.我读到了使用"仅应用程序身份验证"的选项 - 我已在我的帐户下打开了一个应用程序并拥有API密钥和密钥.
请举例说明如何在iPhone应用程序中使用Twitter API.
PS我在哪里可以通过"仅应用程序身份验证"查看可用的API调用?
iphone ×6
ios ×5
android ×2
keychain ×2
xcode ×2
ab-testing ×1
apptimize ×1
cocoa-touch ×1
cryptography ×1
deep-linking ×1
dom4j ×1
java ×1
javascript ×1
objective-c ×1
rsa ×1
security ×1
twitter ×1
uiscrollview ×1
uitableview ×1
wkwebview ×1
xml ×1