当我尝试为Test Flight使用激活我的应用程序版本时,我被问到这个问题:
您的应用是否设计为使用加密技术,还是包含或包含加密技术?(即使您的应用仅使用iOS或OS X中提供的加密,也请选择"是".)
在我的应用程序中,我通过HTTPS向我的远程服务器发送API调用,以便用户可以交朋友,聊天,验证等.
这算数了吗?我有点困惑为什么他们现在问这个并且仅用于试飞.
我的开发团队最近为我们的Apple Developer帐户添加了新的分发证书.我下载了它,它现在在我的钥匙串上.但是,我在Xcode中收到此消息:
您在成员中心拥有有效的iOS分发证书,但未在本地安装.如果您的签名身份安装在另一台Mac上,则可以在该Mac上导出开发人员配置文件并将其导入此Mac.您也可以撤销当前的证书并申请新的证书.
当我转到首选项>帐户>查看详细信息时,我只看到1个证书签名标识"iOS开发".如何添加新的分发证书?我认为将它安装在我的钥匙串上已经足够了.当我尝试将证书从我的钥匙串拖到"查看详细信息"部分中的签名身份时,它不起作用,因为我无法将其拖动到那里.
我认为下载分发证书足以让它"本地安装",如Xcode所说,但显然它没有效果.
任何帮助或建议将不胜感激.谢谢.
在我的应用程序中,我在比较两个NSNumber对象时不小心使用了"==" :
NSNumber *number1;
NSNumber *number2;
Run Code Online (Sandbox Code Playgroud)
后来,在设置了这些对象的int值后,我不小心这样做了:
if (number1 == number2) {
NSLog(@"THEY'RE EQUAL");
}
Run Code Online (Sandbox Code Playgroud)
而且,令人困惑的是,它有效!我可以发誓我被教导这样做:
if (number1.intValue == number2.intValue) {
NSLog(@"THEY'RE EQUAL");
}
Run Code Online (Sandbox Code Playgroud)
如何在两个NSNumber对象之间使用"==" ,为什么?这是否意味着可以通过这种方式对它们进行比较,还是只是一个侥幸,这通常不能保证每次都有效?这真让我困惑:(
在我的应用程序中,我只是尝试Firebase通过ListenerForSingleValueEvent在以下代码中添加一个来从我的数据库中检索读取段落:
myRef.child("passages").child(passageNum).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
System.out.println("ON DATA CHANGE");
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("DATABASE ERROR");
FirebaseErrorHandler.handleDatabaseError(databaseError.getCode(), ReadingActivity.this);
}
});
Run Code Online (Sandbox Code Playgroud)
当有互联网连接时,它工作得很好.但是,当我故意关闭互联网连接时,既没有onDataChange也没有onCancelled被呼叫.这非常令人沮丧,因为其中两个错误代码databaseError.getCode()与网络连接问题有关.
如果我不能在此获得的数据由于没有互联网,我想至少让用户知道,而不是有这个监听器挂在屏幕不断加载.有办法解决这个问题吗?我是否只需要使用Firebase'sREST API?至少对于RESTful网络请求,它们会通知您连接是否失败.
我决定使用Volley并使用RESTful路由,Firebase因为他们的听众似乎在没有互联网连接时挂起.至少对于Volley,它让我知道网络请求是否由于互联网连接而未成功.
我需要知道FirebaseUserauth令牌是否过期.在我的应用程序中,我只允许Google和Facebook身份验证,并且我使用以下代码,假设Firebase用户身份验证令牌不会过期:
private String authToken;
// Callbacks
public interface ApiCallbacks {
public void onSuccess(JSONObject response);
public void onError(String errorString);
}
private interface AuthTokenCallbacks {
public void onAuthTokenSuccess();
public void onAuthTokenError(String errorString);
}
// Request Helpers
private void getAuthToken(final AuthTokenCallbacks callbacks) {
// Lazy instantiation
if (authToken == null) {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user == null) {
callbacks.onAuthTokenError("Please log in");
} else {
user.getToken(false).addOnCompleteListener(new OnCompleteListener<GetTokenResult>() {
@Override
public void onComplete(@NonNull Task<GetTokenResult> task) { …Run Code Online (Sandbox Code Playgroud) 我正在使用JSQMessagesViewController我的应用程序中与服务器通信的聊天功能.但是,聊天气泡非常难以预测,其大小永远无法正确调整.文本总是被切断,因为聊天气泡没有增加其宽度和高度以适合我的消息.我有以下代码:
#import "ChatViewController.h"
#import "JSQMessage.h"
#import "JSQMessagesTimestampFormatter.h"
#import "JSQMessagesBubbleImage.h"
#import "JSQMessagesBubbleImageFactory.h"
#import "User.h"
#import "AuthenticationHelper.h"
#import "Chat.h"
@interface ChatViewController ()
@property(strong, nonatomic)NSMutableArray* messagesArray;
@property(strong, nonatomic)User* myUser;
@property(strong, nonatomic)NSTimer* updateTimer;
@end
@implementation ChatViewController
#pragma mark - View lifecycle
/**
* Override point for customization.
*
* Customize your view.
* Look at the properties on `JSQMessagesViewController` and `JSQMessagesCollectionView` to see what is possible.
*
* Customize your layout.
* Look at the properties on `JSQMessagesCollectionViewFlowLayout` to see what is …Run Code Online (Sandbox Code Playgroud) 我刚刚开始参加分布式系统课程,我的老师在我们课程的网站上说了以下内容:
请不要使用包!如果您的 Eclipse 配置默认使用它们,请在编写代码之前删除它们!
她到底在说什么?我认为 Eclipse 需要为项目源文件创建包以保持组织有序。我该如何删除它们?
在我的应用程序中,对我的服务器的2-4个API调用可以在我的API类中同时(异步)进行NSURLSession.为了向我的服务器发出API请求,我必须在HTTPHeaderField每个服务器中提供身份验证令牌NSURLRequest.令牌有效期为一天,如果在一天后失效,我需要刷新令牌.
我在我的API类的以下代码中执行此操作:
/*!
* @brief sends a request as an NSHTTPURLResponse. This method is private.
* @param request The request to send.
* @param success A block to be called if the request is successful.
* @param error A block to be called if the request fails.
*/
-(void)sendTask:(NSURLRequest*)request successCallback:(void (^)(NSDictionary*))success errorCallback:(void (^)(NSString*))errorCallback
{
NSURLSessionDataTask *task = [self.session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
{
[self parseResponse:response data:data fromRequest:request successCallback:success errorCallback:^(NSString *error)
{ …Run Code Online (Sandbox Code Playgroud) 我听说我应该总是使用weakSelf块来避免保留周期,但是调度块呢?在这种情况下,我的方法在以下代码中处理来自我的服务器的错误响应:
//handling server errors (particularly "Token Refresh Failed" ones)
-(void)handleServerErrorResponse:(NSString *)error {
dispatch_async(dispatch_get_main_queue(), ^{
UIAlertController *alertController = [DialogHelper getAlertForSimpleAuthError:error];
if ([error isEqualToString:@"Your login session has expired"]) {
[alertController addAction:[UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action)
{
[MyModelDataCenter emptyDataCenter];
[MyAPIInterface sharedInstance].authToken = nil;
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
[defaults removeObjectForKey:@"authToken"];
[defaults removeObjectForKey:@"defaultUserObjectDictionary"];
[defaults synchronize];
[AuthenticationHelper sharedInstance].loggedInUser = nil;
[self.navigationController popToRootViewControllerAnimated:YES];
}]];
}
else {
[alertController addAction:[UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:nil]];
}
[self presentViewController:alertController animated:YES completion:nil];
});
}
Run Code Online (Sandbox Code Playgroud)
我应该weakSelf在这个块中使用和在其他块中一样吗?
memory-management objective-c objective-c-blocks retain-cycle
我已经阅读了很多关于保留周期的内容。必要时,父级UIViewController应始终strong引用其子级,UIViewController而子级应始终weak引用其父级。
仅当他们相互引用时才这样吗?例如,如果父级UIViewController没有对其子级的任何引用,那么子级是否strong可以引用其父级UIViewController?从长远来看,我可以摆脱这种做法,还是在内存问题方面这是不好的做法?
ios ×6
objective-c ×3
android ×2
firebase ×2
xcode ×2
api ×1
compare ×1
eclipse ×1
java ×1
memory-leaks ×1
nsnumber ×1
nsurlrequest ×1
nsurlsession ×1
retain-cycle ×1