小编use*_*285的帖子

自定义UIView子类要求两次调用awakeFromNIB

我绝望地被困住了,我会很感激指针.

我们正在尝试构建一个包含多个视图的视图控制器,这些视图是UIView的子类.除了我们需要手动初始化视图或再次手动调用awakeFromNib(这是不允许的)之外,一切都工作得很好.

这是问题......

Subclassed UIView头文件:

#import <UIKit/UIKit.h>
@interface introView : UIView
@property (strong, nonatomic) UIView *view;
@property (strong, nonatomic) NSString *title;
@property (strong, nonatomic) IBOutlet UILabel *titleLabel;
@end
Run Code Online (Sandbox Code Playgroud)

Subclassed UiView主文件:

#import "introView.h"

@interface introView ()
@end

@implementation introView

-(id)init
{
    NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"introView" owner:self options:nil];
    id mainView = [subviewArray objectAtIndex:0];
    return mainView;
}
- (void) awakeFromNib
{
    [super awakeFromNib];
    [self initialize];
    [self addSubview:self.view];
}

-(void)initialize
{
    NSLog(@"title: %@", self.title);
    self.titleLabel.text = self.title;
}
Run Code Online (Sandbox Code Playgroud)

然后我们从视图控制器初始化视图:

introView *view = …
Run Code Online (Sandbox Code Playgroud)

objective-c uiview ios

5
推荐指数
1
解决办法
9037
查看次数

具有用于推送通知的用户上下文的设备令牌的生命周期

我知道以下问题与代码没有直接关系,但我们确实需要一些有关推送通知最佳实践的输入。

我们目前正在构建一个聊天应用程序,该应用程序使用推送通知来通知用户有新消息可用。这不是什么新鲜事,也不是什么奇特的东西……我们也已经有了允许我们做到这一点的代码:

  • 在设备启动时应用程序请求设备令牌
  • 获取设备令牌
  • 向推送服务器注册
  • 完成并且有效

然而,我的问题是当应用程序用户上下文发生变化时该怎么办。例如:

  1. 用户A登录应用程序,接收设备令牌,注册设备
  2. 用户A注销
  3. 用户 B 在同一设备上登录应用程序,获取相同的设备令牌,再次注册设备,但设备已知。

目前我们遇到的问题是,应用程序仍然收到来自用户 A 的推送通知,因为推送服务器认为该设备仍在用户上下文 A 下。

当然,我们可以实现一个注销功能,在注销时删除设备,但如果应用程序被删除并重新添加,会发生什么情况。例如:

  1. 用户 A 记录并接收推送通知
  2. 用户 B 删除同一设备上的应用
  3. 用户B再次下载应用程序并获取设备令牌

此时,即使没有用户登录,设备也会再次收到来自用户 A 的推送通知。

在我看来,我们在思考中错过了关键的一步,但我们不知道那是什么……我们不能请求新的设备令牌。

提前致谢

lifecycle apple-push-notifications devicetoken ios

5
推荐指数
0
解决办法
1152
查看次数