I met a strange problem when I make the bonjour develop on iPad.
The requirement is like this:
a).I write the bonjour server on Mac and it works fine.
And iPad will conntect with this service by Wi-Fi.
This Wi-Fi network is created by this Mac(Internet sharing).
Thus once iPad joined into this Wi-Fi network, the bonjour browser
program(which run in iPad) will find the service.
The steps:
a).firstly I am sure that this client program works fine.
It could find the serivce.
b).But I want to make this program are stable under any condition. So I take a detail
test.
c).One of the testcase is:
1). The client program already run on iPad, and could find the service.
2). Then, I make "WLAN off" in setting item(I close the connect from iPad).
3). Then, I make "WLAN on" and select the same Wi-Fi network.
The problem comes:
a). I find, the cilent program find the bonjour service sometimes take
so long time(max time even 7 minutes),sometimes several seconds.
b). And this is only happened under the condition whhich WI-FI created
as "Internet sharing from Mac". If I create the Wi-Fi as
"None Internet share", I could always found the bonjoure service
within about 20 seconds.
So, what's the difference between "Wi-Fi as none internet sharing and
internent shareing(I know iPad could go to internet by internet sharing from Mac"?
How to slove it?
Related
I'm trying to connect apple tv with my xcode to debug my app. But I'm getting below dialog and it will never go. So I tried following steps to fix but no use.
Waited for 10 mins and checked but still the same.
I restarted/reset apple tv and checked but no use.
Tried with different versions of xcode but no use.
Tried using wifi, mobile hotspot with different networks.
Some times I will get this dialog and it will never go.
If I try to run app in this state then I will get this alert in xcode
So I'm not understanding the why its behaving like this. And how to fix this issue ?
Wireless Debugging on Apple TV
Dive has some great recommendations about using Apple TV with your machine, connected via Ethernet. So far this is also my preferred way to connect, develop and deploy to Apple TV, however debugging on Wifi isn't the best experience.
Here are a few things you could try.
Remove current pairing by using Device and Simulator window.
Try downloading Apple Configurator 2 and use that to first pair your Apple TV to your machine. This is great tool to ensure you can connect to your iOS/tvOS devices for some super user type setup. ( Main Menu -> Paired Devices)
For this to work you have to be on a specific screen on your Apple TV.
Settings -> Remote and Devices -> Remote App and Devices ( This uses multipeer connectivity)
If you are successful pairing your TV using apple configurator then it's a good sign as you can rule our networking issues with your Wifi.
Try pairing with Xcode after it's paired with your machine in the step above. The dialog window you see above is expected and takes some time ( longer in some cases) but should eventually complete.
If step 3 wasn't a success, unpair from Xcode and Apple Configurator ( if they show as connected but not aren't really paired), restart your machine and Apple TV and start the same steps again.
Lan Set up :
You can connect to your Apple TV via a switch or usually Modem/Routers have inbuilt switch ( extra ethernet ports).
Try the same steps and you should be able to pair with Xcode.
Troubleshooting: Try using Console app on your machine if you still can not figure out the root cause and this should help you debug the pairing issue.
There is a helpful instruction from Apple - Pair a wireless device with Xcode (iOS, tvOS) and I assume that you did as they recommend.
Such issues usually appear due to the following reasons:
Something is wrong with your network configuration. The easiest way to check is to try to wirelessly connect your iPhone to be sure that you do not have the same problem. If this is the case then try to white-list the IP address for the Apple TV on your router and open necessary ports;
About port, Apple recommends the following configuration: Communication to network devices uses port 62078. Some networks block specific ports. You may need to check your network settings or ask your system administrator to open this port;
Your Xcode version has to be in sync with tvOS. From the screenshots, I see that you have tvOS 13.3.1. It means that it is better to use Xcode 11.3.1 in this configuration. But you mentioned that you already tried this.
The option that always works to me is to use an Ethernet connection. I connect my AppleTV via the ethernet cable to my router and access it from my MacBook without problems:
Connect the device to the same network using an Ethernet cable.
For an Apple TV, connect using the Ethernet port in the back of the device.
I have made the simplest app possible to connect to a Mavic Pro (basically the Swift version of this code (which comes from the Aircraft Binding and Activation demo on DJI's website.
My setup is as follows: iPhone running the App is connected via lightning cable to the main USB port on the RC (between the two joysticks on the bottom). The switch on the Mavic is set to "RC" (not Wifi).
When I run the app, the aircraft binding state is unknown and the DJISDKManager.product() returns nil, even though registration of the app completed successfully.
Here are some strange but helpful pieces of information:
With the same setup as above, running the DJI Go App from the same device works perfectly.
Using either the wireless bridge app or the wifi connections works perfectly and I'm able to connect with the aircraft no problem.
Is there some setting I'm missing? I looked at all of DJI's documentation very carefully, and have found no solutions.
The hardware accessory (the remote controller) may be associated with DJI Go now. With your app open, un-plug the lightening cable, and plug it back in. Now it will be associated with your app. With iOS 11 apps sharing hardware devices got a bit challenging.
(but thanks for mentioning DJI Go did work, then we don't have to worry the microUSB in the upper left corner of the RC was activated. Leaving the pigtail connector in will block the USB port you are using.)
I almost had the same problem. Here is the fix that worked for me.
Make sure in your info.plist file you have the following.
DJI-SDK
Also I am assuming that you calling DJISDKManager.startConnectionToProduct() after appRegisteredWithError(_ error: Error?) is called.
We have an application which is intended for intranet use. It's not available on the web and we'd prefer to keep it that way.
In house the iPad can connect to the wifi and we can demonstrate the website that way. At a customers is there any way of connecting the iPad to the laptop and showing a website running on IIS off that laptop?
The only way I can think of is by attaching a router to the laptop and running a local network that way, not sure if customers would be entirely comfortable with that
We could also look into some kind of VPN arrangement? It would be so much easier if we could connect the iPad and laptop though
thanks
(Edit) Is Bluetooth a possibility?
I did a huge kludge when I needed something like that. I don't really recommend it because it's annoying, but it works to some level.
Connect your phone to the laptop, sharing the 3G connection via USB.
On the laptop, share that USB connection via WiFi.
Connect the iPad to the laptop's access point (WiFi)
The iPad should now be able to "see" the webserver that runs on your laptop
I am looking for a weekend project to do and I was wondering if this was possible. I have these radios that are programmed using Telnet (to set the frequencies, output power, etc.) and I normally do this with my computer in the terminal. The radios have an RS-232 connector on them and I use a USB converter to connect to my computer. Having a small, portable device to program them with instead of a big, clunky laptop would be great, so what I am hoping is possible is to be able to create a telnet connection with my iPhone. Is it possible to create a Telnet application for my iPhones that can connect to these radios through the USB/lightning port on the iPhone? I know normally when people write Telnet applications for the iPhone, they are using over the air connections like WiFi/3G/4G to connect to the internet, but this radio is not connected to the internet but its own private network of other radios. If it is possible to connect the iPhone to the RS-232 port and accomplish the Telnet connection (also without frying my iPhone with too much current) that would be fantastic. Also, if it is possible, how would I access the lightning port? Thanks!
EDIT: Another possible connection is the iPhones lightning port to an RJ-45 connection. That would work as well. Is this possible? Thanks!
As far as I know, you can always study the specification of the lightning connector, you can find it here : http://en.wikipedia.org/wiki/Lightning_(connector). You can try to play with the SDK, trying to send commands from the iPhone and receiving information through the cable. The problem of that, and I was working in several medical applications with the 30 pin connector and the lightning as well, is you have to spend a lot of time to deal with the specification. The most important part is to understand how the connector works and what can you send and receive through the cable. If not, you would have to build your own connector, which is interesting and can help to learn a lot, but it´s not an easy thing. In a project I was working, we had to build several cables to adapt the signals to connect with the device, in my case an iPad1 and recently an iPad 4 although it works with the iPhone as well. As you know, or you should, you will have to learn about MFI.
You can find some information regarding that point here : Create an iPad app that can send/receive data via the USB cable?, but bear in mind everything goes through MFI, so it has its pros and cons....most of them cons. You can find several information here : https://developer.apple.com/programs/mfi/
good luck :)
I've been banging my head against this for the last week or so. I've already gone through the following resources:
StackOverflow: Bonjour over bluetooth WITHOUT Gamekit ? (3844189)
StackOverflow: How does Bonjour Over Bluetooth Work (3350094)
StackOverflow: Using iOS GameKit's “Bluetooth Bonjour” with other platforms (8070998)
Technical Q&A QA1753 -- Apple Developer
WiTap sample application
SRVResolver sample application
DNSSDObjects sample application
I'm using Mac OS 10.7, Xcode 4.5, an iPhone 4 with iOS 6, and an iPad 1 with iOS 5.1.1.
My problem is this: I am modifying an application that currently uses GameKit's peer picker to connect between an iPad and a iP{hone|od touch}. We want to modify this to use Bonjour over Bluetooth instead because we've had issues with reconnecting the devices using Gamekit if the connection is lost. I've used dns_sd.h API to some success and have gotten the service to advertise and resolve over wifi, but even though I am passing kDNSServiceFlagsIncludeP2P I am not getting any success over bluetooth.
I thought possibly Bluetooth Bonjour need a PAN established between devices already, but even pairing the iPad to the iMac and browsing for DNS-SD services gives me nothing...and the iPhone won't pair to the iPad anyway.
I just finished solving this in my own app in the last 24 hours. I used the core classes from the OS X sample app DNSSDObjects. I only had to change three lines of code to add support for bluetooth. This works great in my iOS app.
In DNSSDBrowser.m, the call to DNSServiceBrowse needs to have kDNSServiceFlagsIncludeP2P passed in for the 2nd parameter.
In DNSSDRegister.m, the call to DNSServiceRegister needs the same change.
In DNSSDService.m, the call to DNSServiceResolve also needs the same change.
If you want to limit yourself to just bluetooth, and not WiFi, then the same three lines of code should be updated so the 3rd parameter is kDNSServiceInterfaceIndexP2P instead of kDNSServiceInterfaceIndexAny.
Indeed, it looks like the kDNSServiceInterfaceIndexP2P flag won't work on OSX.
If you run the code on IOS, you'll notice that Bonjour will publish two IP Adresses: one for your local WiFi network, and an 169.xx.xx.xx adress for Bluetooth.
The same code on OSX never publishes the 169.xx.xx.xx adress, so it's only found over WiFi.