我在App Store有一个带有本地通知的应用程序.
在我的应用程序的最后4个版本更新中,有些客户遇到了一些奇怪的事情 - 该应用程序失去了对之前通知的控制权,他们不断在更新之前安排所有通知,即使他们应该被取消[[UIApplication sharedApplication] cancelAllLocalNotifications]!
在与这些客户沟通时,我告诉他们关闭提醒,执行某些操作cancelAllLocalNotifications,但他们声称不断收到提醒.
此外,重新安装应用程序并没有摆脱旧的通知!就好像iOS认为这是一个不同的应用程序.
它不会发生在我的大多数客户身上,只有极少数客户 - 但是,每次更新都会发生!
怎么会这样?
更新
3年后,它仍在发生.
每个更新一些客户不断收到本地通知,但应用程序无法看到这些,也无法控制它们.
任何人都可以解决这个问题或证明它是iOS的错误吗?
我试图在bash脚本中计算动态天数的日期.
这就是我所做的 -
#!/bin/bash
STAMP=`date --date='$1 day ago' +%y%m%d`
Run Code Online (Sandbox Code Playgroud)
但在跑步时myscript 2,它说 -
date: invalid date `$1 day ago'
Run Code Online (Sandbox Code Playgroud)
如何在此公式中使用我的参数值?
当开始jetty-distribution-9.3.0.v20150612有openjdk 1.8.0_51一个亚马逊EC2 Linux机器上运行,是所有配置的ECDHE套房不支持打印.
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 not supported
2015-08-12 …Run Code Online (Sandbox Code Playgroud) 在Android应用上使用com.squareup.okhttp:okhttp:2.4.0with com.squareup.retrofit:retrofit:1.9.0,尝试通过HTTPS与服务器REST API进行通信,该API使用自签名证书.
服务器密钥库有一个私钥和2个证书,服务器和根证书.openssl s_client输出 -
Certificate chain
0 s:/C=...OU=Dev/CN=example.com
i:/C=... My CA/emailAddress=info@example.com
1 s:/C=... My CA/emailAddress=info@example.com
i:/C=... My CA/emailAddress=info@example.com
Run Code Online (Sandbox Code Playgroud)
在Android应用程序中,OkHttp使用根证书的SHA1签名进行初始化 -
CertificatePinner certificatePinner = new CertificatePinner.Builder()
.add("example.com", "sha1/5d...3b=")
.build();
OkHttpClient client = new OkHttpClient();
client.setCertificatePinner(certificatePinner);
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("https://example.com")
.setClient(new OkClient(client))
.build();
Run Code Online (Sandbox Code Playgroud)
但是当尝试发送请求失败时会出现异常 -
retrofit.RetrofitError: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:395)
at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:240)
at java.lang.reflect.Proxy.invoke(Proxy.java:397)
at $Proxy1.report(Unknown Source)
...
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at …Run Code Online (Sandbox Code Playgroud) 获取此处提供的示例源代码,转换为Swift 3并应用我生成的升级后的Twilio帐户令牌.
尝试拨打电话时,它会播放声音,但HTTP/1.0 400 Bad request在尝试访问时会失败https://matrix.twilio.com/2012-02-09/AC ....
这是试图打电话后的日志 -
2016-10-16 18:32:12.955056 MyApp[577:121739] [DEBUG TCDeviceInternal] Inside TCDeviceInternal initWithCapabilityToken, capabilityToken_: (null)
2016-10-16 18:32:12.961112 MyApp[577:121739] [VERBOSE TCDeviceInternal] Inside decodeCapabilityToken:, Header: {
alg = HS256;
typ = JWT;
}
2016-10-16 18:32:12.962305 MyApp[577:121739] [VERBOSE TCDeviceInternal] Inside decodeCapabilityToken:, payload: {
exp = 1476635532;
iss = ....REMOVED....................;
scope = "scope:client:incoming?clientName=TestName scope:client:outgoing?appSid=AP.....REMOVED......&clientName=TestName";
}
2016-10-16 18:32:12.962611 MyApp[577:121739] [VERBOSE TCDeviceInternal] Scope URI: scope:client:incoming?clientName=TestName, inside setCapabilitiesWithCapabilityToken:
2016-10-16 18:32:12.962860 MyApp[577:121739] [VERBOSE TCDeviceInternal] Scope URI: scope:client:outgoing?appSid=AP.............REMOVED.......&clientName=TestName, inside …Run Code Online (Sandbox Code Playgroud) 使用Facebook iOS SDK 3.1.1,我正在使用此调用执行登录 -
NSArray *permissions = [[NSArray alloc] initWithObjects: @"email", @"user_birthday", @"user_location", nil];
@try {
return [FBSession openActiveSessionWithReadPermissions:permissions
allowLoginUI:allowLoginUI
completionHandler:^(FBSession *session,
FBSessionState state,
NSError *error) {
[self sessionStateChanged:session
state:state
error:error];
}];
}
@catch { ... }
Run Code Online (Sandbox Code Playgroud)
在极少数情况下,此方法会抛出NSInvalidArgumentException消息Access options are not permitted for this account type. The options argument must be nil.,这是抛出的[ACAccountStore requestAccessToAccountsWithType:options:completion:].
检查Apple的文档ACAccountStore,我看到该方法的评论:
"某些帐户类型(如Facebook)需要一个选项字典.如果没有为此类帐户类型提供选项字典,此方法将抛出NSInvalidArgumentException.相反,如果帐户类型不需要选项字典,则options参数必须为零."
除了Facebook之外,Apple要求这是零,但这种方法是从Facebook调用的,所以也许这是一个错误 - 无论是在Facebook还是在iOS 6.0/.1,但我在网上找不到关于这个问题的任何内容.
有任何想法吗?
每次我们在UI中更改内容时,我们都必须手动准备并获取iTunes Connect列表的375(= 5个屏幕截图*5种设备类型*15种语言)屏幕截图.
我正在尝试"利用"iOS 9的新UI测试来自动准备并为每种语言拍摄这些屏幕截图.这应该可以节省大量时间并为我们的用户提供更好的体验,因为我们没有经常更新屏幕截图,因为所涉及的工作很繁琐.
我在互联网上找不到多少帮助,可能是因为这个功能太新鲜了.所以这里有两个基本问题,希望我们能找到一种方法来实现它.
是否可以通过UI测试API将屏幕截图保存到磁盘?
是否可以为XCTestCase进行全新安装?
在迁移到iOS 7 SDK之后,突出显示正常和突出显示状态的自定义背景图像的UIButton突然变暗.
adjustsImageWhenHighlighted 设置为NO,它正常工作,直到新的SDK.
按钮在XIB中定义,稍后在代码中分配文本.
改变了什么?
我们的应用程序发布了一些小更新,此版本还通过Apple支持将其App ID从唯一ID更改为我们的团队ID.
根据Apple的说法,更改为使用Team ID应该只重置keychain访问权限,我们不使用keychain,因此它不会对我们的应用程序产生任何影响.
但自从更新发布以来,我们的一些生产用户已经遇到了应用数据损坏的问题.只有当他们使用通知中心或锁定屏幕中的操作按钮响应本地通知时才会发生这种情况.它可能会在所有支持的iOS版本上发生.
遇到此问题的用户有另一种症状,他们会收到两个本地通知,而不只是一个,但该应用只会看到一个通知.此外,在禁用通知和取消后,这些通知仍然不会消失[[UIApplication sharedApplication] cancelAllLocalNotifications].
这些重复通知是在应用程序从App Store更新之前安排的,但在更新应用程序失去对某些用户的控制权之后.此问题中详细介绍了此问题.
最大的线索可能在于从Apple收到的崩溃报告 -
Incident Identifier: ED0E9C.............74B38C
CrashReporter Key: ae05b............dbc46
Hardware Model: iPhone4,1
Process: MY_APP [444]
Path: /private/var/mobile/Containers/Bundle/Application/65324..................8616/MY_APP.app/MY_APP
Identifier: com.mycompany.myapp
Version: X.X
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2015-10-27 21:45:24.24 -0500
Launch Time: 2015-10-27 21:45:20.20 -0500
OS Version: iOS 9.1 (13B143)
Report Version: 104
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Triggered by Thread: 0
Last Exception Backtrace: …Run Code Online (Sandbox Code Playgroud) notifications objective-c nsnotificationcenter ios uilocalnotification
如果用户在手机上安装了Facebook应用,则可以使用Facebook归属ID.
在Android上,它可以使用这段代码提取 - 报告Android应用程序安装回Facebook而不使用他们的api
通过查看Facebook的iOS SDK,他们可以通过以下方式访问它:
+ (NSString *)attributionID {
return [[UIPasteboard pasteboardWithName:@"fb_app_attribution" create:NO] string];
}
Run Code Online (Sandbox Code Playgroud)
(https://github.com/facebook/facebook-ios-sdk/blob/master/src/FBUtility.m)
但是当我在安装了FB应用程序的手机上调用此方法时,它会返回nil.
如何在iOS上提取它?