Я зарегистрировался на Urban Airship, получил ключ приложения, секрет и секрет мастера. Я также интегрировал их библиотеку.Городской дирижабль: генерировать идентификатор канала во время первого запуска приложения iOS
-(void)setupUrbanAirship
{
UAConfig *config = [UAConfig defaultConfig];
config.detectProvisioningMode = YES;
config.productionLogLevel=NO;
config.inProduction = NO;
config.developmentAppKey = @"XXXXXXXXXXXXXXXXXXX";
config.developmentAppSecret = @"XXXXXXXXXXXXXXXXX";
[UAirship takeOff:config];
[UAirship push].userPushNotificationsEnabled = YES;
[UAirship push].userNotificationTypes = (UIUserNotificationTypeAlert |
UIUserNotificationTypeBadge |
UIUserNotificationTypeSound);
}
Я называю это в моем коде:
NSString *channelID = [UAirship push].channelID;
NSLog(@"channelID %@",channelID);
Во время первого запуска приложения channelID всегда нуль.
Я могу получить идентификатор канала во время второго запуска, но не во время первого запуска. В любом случае, можно предложить способ для получения идентификатора channelID во время первого запуска. Заранее спасибо.
Отредактировано:
Согласно предложению ralepinski, я имею в добавляющий '[UAirship толчок] .registrationDelegate = self.registrationDelegate' строки кода.
В ViewController.h:
@interface ViewController : UIViewController
{
IBOutlet UIButton *selectButton;
NSTimer *channelIDDetectionTimer;
}
@property (nonatomic, weak, nullable) id<UARegistrationDelegate> registrationDelegate;
В ViewController.m Я также использую следующие строки коды:
-(void)initRegistration
{
AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
NSString *channelID = [UAirship push].channelID;
NSLog(@"channelID %@",channelID);
if (channelID!=nil)
{
[delegate saveChannelID];
if (channelIDDetectionTimer!=nil)
{
[channelIDDetectionTimer invalidate];
channelIDDetectionTimer = nil;
}
}
else
{
[UAirship push].registrationDelegate = self.registrationDelegate;
//[[UAPush alloc]updateRegistration];
// Registering for only UIRemoteNotificationTypeNone will not result in a
// device token registration call. Instead update chanel registration directly.
}
}
-(void)viewWillAppear:(BOOL)animated
{
channelIDDetectionTimer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(initRegistration) userInfo:nil repeats:YES];
}
Я позволившая удаленные уведомления, в разделе возможностей целевого приложения , Тем не менее, я получаю ChannelID как null во время первого запуска приложения. Дай мне знать. Благодарю.
Thanks ralepinski! – Nitin