使用私有框架以编程方式发送iMessage [英] Programatically send iMessage using private frameworks

查看:387
本文介绍了使用私有框架以编程方式发送iMessage的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Does anyone know if it's possible to directly send an iMessage using a private framework?

我尝试使用 CTMessageCenter 来自 CoreTelephony 但即使我的手机可以发送iMessages,它也会发送短信。

I tried using CTMessageCenter from CoreTelephony but it'll send an SMS even though my phone can send iMessages.

推荐答案

我没有对此进行过测试,但请查看在这里发布的代码。如果您查看 httpResponseForMethod:URI:,您会看到他/她发送消息的位置(似乎是硬编码以支持 iOS 5或iOS 4 ):

I haven't tested this, but look at the code posted here. If you look at httpResponseForMethod:URI:, you see where he/she sends a message (appears to be hardcode to support iOS 5 or 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);

}

代码使用普通短信,但你可以看到以下内容注释掉代码:

The code uses normal SMS, but you can see the following commented out code:

//CKMadridService *madridService = [CKMadridService sharedMadridService];

马德里服务可能是发送iMessages的服务。 请在此处查看私人标题

The "Madrid" service is probably what can send iMessages. See the private header here.

SMS和iMessage私有API都在 ChatKit.framework 中。

Both SMS and iMessage private APIs are in the ChatKit.framework.

这篇关于使用私有框架以编程方式发送iMessage的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆