我使用UrbanAirship管理iOS应用中的通知。
我想在如何管理通知时添加一些特定的行为,因此我决定在自定义处理程序上实现协议UAPushNotificationDelegate
。
在这个协议中,我只是在这两个函数中添加一些NSLog用于测试目的。
- (void)displayNotificationAlert:(NSString *)alertMessage{
NSLog(@"Foreground Alert");
}
- (void)launchedFromNotification:(NSDictionary *)notification{
....Here I added code to present an alert view...
}
然后在AppDelegate方法中didFinishLaunchingWithOptions
我添加了UrbanAirship配置:
// UrbanAirship data
UAConfig *config = [UAConfig defaultConfig];
[UAirship takeOff:config];
// THE DELEGATE!
UANotificationDelegate *pushDelegate = [[UANotificationDelegate alloc]init];
[UAPush shared].pushNotificationDelegate = pushDelegate;
[UAPush shared].notificationTypes = (UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeSound |
UIRemoteNotificationTypeAlert );
这是我用来测试代码的测试curl调用。
curl -X POST -u "_APPKEY_:_MASTERKEY_" \
-H "Content-Type: application/json" \
--data '{"device_tokens": ["_THETOKEN_"],
"aps": {"alert": "Hello!"}}' \
https://go.urbanairship.com/api/push/
我的设备收到通知,但我的自定义方法永远不会被调用。 我做错了什么?
答案 0 :(得分:1)
pushNotificationDelegate属性很弱,所以没有什么能阻止你的pushDelegate进入垃圾收集。您希望自己在某处存储pushDelegate变量,以确保它不会被解除分配。