使用私有框架编程发送iMessage

6

有没有人知道是否可以使用私有框架直接发送iMessage?

我尝试使用CoreTelephony中的CTMessageCenter,但它会发送短信,即使我的手机可以发送iMessage。


添加越狱标签,似乎适合在这里。 - Richard J. Ross III
2个回答

2

我没有测试过这个,但是看看这里发布的代码。如果你看一下httpResponseForMethod:URI:,你会看到他/她发送消息的地方(似乎是硬编码支持iOS 5或iOS 4):

CKSMSService *smsService = [CKSMSService sharedSMSService];

//id ct = CTTelephonyCenterGetDefault();
CKConversationList *conversationList = nil;

NSString *value =[[UIDevice currentDevice] systemVersion];          
if([value hasPrefix:@"5"])
{
    //CKMadridService *madridService = [CKMadridService sharedMadridService];
    //NSString *foo = [madridService _temporaryFileURLforGUID:@"A5F70DCD-F145-4D02-B308-B7EA6C248BB2"];

    NSLog(@"Sending SMS");
    conversationList = [CKConversationList sharedConversationList];
    CKSMSEntity *ckEntity = [smsService copyEntityForAddressString:Phone];
    CKConversation *conversation = [conversationList conversationForRecipients:[NSArray arrayWithObject:ckEntity] create:TRUE service:smsService];
    NSString *groupID = [conversation groupID];           
    CKSMSMessage *ckMsg = [smsService _newSMSMessageWithText:msg forConversation:conversation];
    [smsService sendMessage:ckMsg];
    [ckMsg release];     
} else {
    //4.0
    id ct = CTTelephonyCenterGetDefault();
    void* address = CKSMSAddressCreateWithString(pid); 

    int group = [grp intValue];         

    if (group <= 0) {
        group = CKSMSRecordCreateGroupWithMembers([NSArray arrayWithObject:address]);       
    }

    void *msg_to_send = _CKSMSRecordCreateWithGroupAndAssociation(NULL, address, msg, group, 0);    
    CKSMSRecordSend(ct, msg_to_send);

}

代码使用普通短信,但是您可以看到以下被注释的代码:
//CKMadridService *madridService = [CKMadridService sharedMadridService];

"Madrid"服务可能是发送iMessage的功能。可以在此处查看私有标头 (点击)
短信和iMessage的私有API都在ChatKit.framework中。

@Enkidu,如果你看一下问题标签,你会发现这是一个越狱的问题。 - Nate
我不是在询问,而是在通知。我添加了越狱标签 :) - iosMentalist
@Enkidu,实际上,我的第一次回答是错误的。如果您确定此答案需要越狱才能使用(因为API已经改变,我无法再测试),那么这是可以接受的。但是,应该根据提问者的问题来标记问题的标签;它们不应该反映答案。因此,我会将您的评论保留在原样(尽管我无法验证其正确性),但越狱标签不应该应用于问题,因为它不是提问者所问的部分。 - Nate

-5

通过非越狱的iPhone,无法访问iMessage CoreTelephony API。


但是越狱的手机呢? - Alexandre Blin
抱歉,这个你得自己去谷歌一下。我对越狱手机没有经验。 - Matt Aldridge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接