0

我使用 iOSOpenDev 创建了一个 Logos Tweak 来挂钩acknowledgeIncomingMessageWithId:CTMessageCenter我想将通知发送NSNotificationCenter到另一个应用程序,但它不起作用。我认为NSNotificationCenter可以在不同的应用程序之间工作。首先,我尝试测试NSNotificationCenterin 调整。这就是我在下面所做的:

%hook CTMessageCenter

-(void)acknowledgeIncomingMessageWithId:(unsigned int)anId {
        [[NSNotificationCenter defaultCenter] addObserver:self 
                                                 selector:@selector(doingSMS) 
                                                     name:@"SMSComing" 
                                                   object:nil];
        [[NSNotificationCenter defaultCenter] postNotificationName:@"SMSComing" object:nil];
    }

    %orig;
}

- (void)doingSMS{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"短信消息传送成功" 
                                                    message:@"来短信啦"
                                                   delegate:nil 
                                          cancelButtonTitle:@"Good" 
                                          otherButtonTitles:nil];
    [alert show];
    [alert release];
}

%end

但它不起作用。此外,UIAlertView 没有出现。谁能告诉我为什么?

4

2 回答 2

1

要使通知在应用程序之间起作用:

CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), 
                                NULL, 
                                doingSMS,
                                CFSTR("com.your.company.SMSComing"), 
                                NULL, 
                                CFNotificationSuspensionBehaviorCoalesce);

接着

CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(), 
                                     CFSTR("com.your.company.SMSComing"), 
                                     NULL, 
                                     NULL, 
                                     TRUE);

请注意,通知名称"SMSComing"(不带前缀)容易出现问题。

于 2012-12-21T07:15:05.167 回答
0

我在使用 iOSOpenDev 进行的调整中没有出现 UIAlertViews 的问题。
我意识到我必须将 UIAlertView 的委托设置为self. 由于某种我不明白的原因,当我将委托设置为nilUIAlertView 时不会出现。

于 2013-01-12T01:14:48.100 回答