【问题标题】:iOS - Detect text message/call notifications (non-jailbroken device)iOS - 检测短信/通话通知(非越狱设备)
【发布时间】:2014-03-20 06:15:16
【问题描述】:

我正在研究一个概念,我在应用商店中不需要它。我已经寻找方法来做到这一点。找到了这个答案,它说它是在 iOS 4、5、6 中完成的。请检查以下链接。

Is there any private api for iphone that detect sms sent or received

示例代码使用 C、C++ 编写,对 Objective-C 而言意义不大。有没有其他方法可以从应用程序内检测呼叫/消息通知?感谢您提供任何帮助。

【问题讨论】:

  • 之前问过几次:公共API中没有它
  • 是的,但只有一次有人说它可能(上面链接)。我正在尝试找出更多信息。

标签: ios


【解决方案1】:

CoreTelephony 是一个 CoreFoundation 框架,换句话说,它是一个 C/C++ API。此外,它几乎没有记录的功能,基本上您最终可以发现处理了一个呼叫(不是 SMS)。几乎可以肯定,通过 API 可以获得额外的私人信息,但不会被广泛记录。可以在here 找到已发布的 Apple 文档。使用文档之外的任何功能不仅会阻止您将应用程序放入商店,而且很可能会在(不太遥远的)未来破坏应用程序。

【讨论】:

  • 谢谢大卫。我想我必须深入研究 CTCALL 类才能检测呼叫是否已处理。
  • 公共 API 只提供有限的通话信息,不提供短信。
【解决方案2】:

找到了检测电话here的解决方案。当应用程序处于前台时,问题中的解决方案有效。注意:问题的答案对我不起作用。

在 AppDelegate.h 文件中

@property (weak, nonatomic) CTCallCenter* callCenter; 

在 AppDelegate.m 中

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{ 
        self.callCenter = [[CTCallCenter alloc] init];
         [self.callCenter setCallEventHandler:^(CTCall *call)
      {
             NSLog(@"Event handler called");
         if ([call.callState isEqualToString: CTCallStateConnected])
         {
             NSLog(@"Connected");
         }
         else if ([call.callState isEqualToString: CTCallStateDialing])
         {
             NSLog(@"Dialing");
         }
         else if ([call.callState isEqualToString: CTCallStateDisconnected])
         {
             NSLog(@"Disconnected");

         } else if ([call.callState isEqualToString: CTCallStateIncoming])
         {
             NSLog(@"Incomming");
         }
     }];  

return YES;

}

【讨论】:

    猜你喜欢
    • 2020-10-23
    • 2018-03-08
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    • 2014-08-22
    相关资源
    最近更新 更多