3

在我开始之前,我意识到这个问题之前已经在这个论坛上提出过,因为我找到了这个帖子。然而,这个问题没有得到回答。

我正在构建一个使用 iPhone 作为工作机器的系统。我这样说是因为我想强调手机不是苹果的产品,而是一种能够或不能执行给定任务的设备。

我已经越狱了我正在使用的两部手机,并将专门使用它们来解决系统要解决的问题。我的系统将由我和我一个人使用,因此 Apple 打算如何使用这些设备、用户体验等问题与我无关。

好的,说了这么多,我将简要概述该系统。两部 iPhone,其中一部的内脏装在我前门上方的一个电子项目箱中,摄像头面向访客。其他 iPhone,完好无损,在我的口袋里。我已将引脚 1 和 11 连接到门铃按钮,并通过监控音频路由变化来提醒手机被按下。我需要在我的袖珍电话上安装一个应用程序,该应用程序将被门禁电话发送的通知唤醒。一旦我接受了袖珍电话上的通知,门电话也会发送图像。这里根本没有互联网,但是我确实有一个连接两部手机的wifi路由器。

这就是系统,我搜索了高低以找到可以帮助我让门电话生成推送通知并将其发送到我的袖珍电话的代码,到目前为止我发现的只是这个https://github。 com/stefanhafeneger/PushMeBaby这是我只需要它是为 mac 而不是 iPhone 编写的,而且我是 Objective C 的新手,所以移植真的很难。

请有人帮我完成我想做的事情,我知道苹果不打算让我像我一样使用它的产品,但是很多制造商也没有,但爱好者仍然设法使用它们更多创造性和创新的方式。我目前正在使用 PC 和网络摄像头来查看谁在门口并且它使用大量电力,如果我能让它工作,新系统会好得多所以请如果你有能力/知识来提供帮助然后我发表回复,我将永远感激不尽。谢谢你,理查德。

4

2 回答 2

0

我想不出一种直接从一部手机向另一部手机发送消息的简单方法。(虽然我不习惯越狱的东西,所以谁知道......)。无论如何,这就是我要做的:

设置一个简单的 Web 服务器来连接两个设备。你说你没有互联网,所以只要在网络上的本地计算机上运行 Apache 或其他任何东西就可以了。每当您想发送消息时,发送电话都会向服务器发布一些内容。不幸的是,如果您不能/不想使用 Apple 的推送通知服务,我认为接收电话将不得不不断监控服务器以查看是否有任何新消息。:(

于 2012-04-19T04:41:05.277 回答
0

使用 GameKit 将手机与蓝牙配对。

这是一个关于如何蓝牙配对两部 iPhone 的问题:如何使用蓝牙连接两部 iPhone?

最简单的方法是使用高度不透明的 GameKit。这是实现此目的的 Apple 示例应用程序:http: //developer.apple.com/library/ios/#samplecode/GKTank/Introduction/Intro.html

从那个示例中,发送数据包的片段(在 TankViewController.m 中):

- (void)sendNetworkPacket:(GKSession *)session packetID:(int)packetID withData:(void *)data ofLength:(int)length reliable:(BOOL)howtosend {
    // the packet we'll send is resued
    static unsigned char networkPacket[kMaxTankPacketSize];
    const unsigned int packetHeaderSize = 2 * sizeof(int); // we have two "ints" for our header

    if(length < (kMaxTankPacketSize - packetHeaderSize)) { // our networkPacket buffer size minus the size of the header info
        int *pIntData = (int *)&networkPacket[0];
        // header info
        pIntData[0] = gamePacketNumber++;
        pIntData[1] = packetID;
        // copy data in after the header
        memcpy( &networkPacket[packetHeaderSize], data, length ); 

        NSData *packet = [NSData dataWithBytes: networkPacket length: (length+8)];
        if(howtosend == YES) { 
            [session sendData:packet toPeers:[NSArray arrayWithObject:gamePeerId] withDataMode:GKSendDataReliable error:nil];
        } else {
            [session sendData:packet toPeers:[NSArray arrayWithObject:gamePeerId] withDataMode:GKSendDataUnreliable error:nil];
        }
    }
}
于 2012-04-29T08:16:16.100 回答