示例#1
0
        public void initializeMCServices()
        {
            myPeerId = new MCPeerID(UIDevice.CurrentDevice.Name);

            MyAdvertiserDelegate myAdvertiserDelegate = new MyAdvertiserDelegate(this);
            MyBrowserDelegate    myBrowserDelegate    = new MyBrowserDelegate(this);
            MySessionDelegate    mySessionDelegate    = new MySessionDelegate(this);

            var emptyDict = new NSDictionary();
            MCNearbyServiceAdvertiser serviceAdvertiser = new MCNearbyServiceAdvertiser(myPeerId, emptyDict, serviceTypeString);

            serviceAdvertiser.Delegate = myAdvertiserDelegate;
            serviceAdvertiser.StartAdvertisingPeer();

            MCNearbyServiceBrowser serviceBrowser = new MCNearbyServiceBrowser(myPeerId, serviceTypeString);

            serviceBrowser.Delegate = myBrowserDelegate;
            serviceBrowser.StartBrowsingForPeers();

            session          = new MCSession(myPeerId);
            session.Delegate = mySessionDelegate;


            sendPeerToPeerData(myPeerId.DisplayName);
        }
示例#2
0
 /// <summary>
 /// Initializes a new instance of the
 /// <see cref="U3DXT.iOS.Multipeer.SessionStartedReceivingResourceWithNameEventArgs"/> class.
 /// </summary>
 /// <param name="_session">_session.</param>
 /// <param name="_resourceName">_resource name.</param>
 /// <param name="_peerID">_peer I.</param>
 /// <param name="_progress">_progress.</param>
 public SessionDidReceiveCertificateEventArgs(MCSession _session, object[] _certificate, MCPeerID _peerID, bool _acceptCertificate = true)
 {
     acceptCertificate = _acceptCertificate;
     session           = _session;
     certificate       = _certificate;
     peerID            = _peerID;
 }
示例#3
0
 /// <summary>
 /// Initializes a new instance of the
 /// <see cref="U3DXT.iOS.Multipeer.SessionStartedReceivingResourceWithNameEventArgs"/> class.
 /// </summary>
 /// <param name="_session">_session.</param>
 /// <param name="_resourceName">_resource name.</param>
 /// <param name="_peerID">_peer I.</param>
 /// <param name="_progress">_progress.</param>
 public SessionStartedReceivingResourceWithNameEventArgs(MCSession _session, string _resourceName, MCPeerID _peerID, U3DXT.iOS.Native.Foundation.NSProgress _progress)
 {
     session      = _session;
     resourceName = _resourceName;
     peerID       = _peerID;
     progress     = _progress;
 }
示例#4
0
        public static void ProcessCommand(MCSession session, Foundation.NSData data, MCPeerID peerID)
        {
            Console.WriteLine("Received command to process " + data.ToString());

            // disconnect session if needed.
            // forward to internet if available
        }
示例#5
0
        public void FoundPeer(MCNearbyServiceBrowser browser, MCPeerID peerID, NSDictionary info)
        {
            if (peerID != this.myself.PeerId)
            {
                var appIdentifier = info?[XamarinShotGameAttribute.AppIdentifier];
                if (appIdentifier?.ToString() == NSBundle.MainBundle.BundleIdentifier)
                {
                    DispatchQueue.MainQueue.DispatchAsync(() =>
                    {
                        var player   = new Player(peerID);
                        var gameName = info?[XamarinShotGameAttribute.Name] as NSString;

                        GameTableLocation location = null;
                        var locationIdString       = info?[XamarinShotGameAttribute.Location] as NSString;
                        if (!string.IsNullOrEmpty(locationIdString) && int.TryParse(locationIdString, out int locationId))
                        {
                            location = GameTableLocation.GetLocation(locationId);
                        }

                        var game = new NetworkGame(player, gameName, location?.Identifier ?? 0);
                        this.games.Add(game);
                        this.Delegate?.SawGames(this, new List <NetworkGame>(this.games));
                    });
                }
            }
        }
示例#6
0
        public Task StartScanning()
        {
            var isWifiEnabled = NetworkInterfaces.IsWifiEnabled();

            if (!isWifiEnabled)
            {
                throw new WiFiTurnedOffException();
            }

            var myPeerId = new MCPeerID(UIDevice.CurrentDevice.Name);

            _session = new MCSession(myPeerId)
            {
                Delegate = new SessionDelegate(this)
            };
            MainThread.BeginInvokeOnMainThread(() =>
            {
                var browser = new MCNearbyServiceBrowser(myPeerId, BluetoothOperator.CROSSCAM_SERVICE)
                {
                    Delegate = new NewBrowserDelegate(this)
                };
                browser.StartBrowsingForPeers();
            });
            Debug.WriteLine("### SCANNING START");
            return(Task.FromResult(true));
        }
示例#7
0
        public void Ctor_Identity_Certificates()
        {
            TestRuntime.AssertSystemVersion(ApplePlatform.iOS, 7, 0, throwIfOtherPlatform: false);
            TestRuntime.AssertSystemVersion(ApplePlatform.MacOSX, 10, 10, throwIfOtherPlatform: false);

            using (var id = IdentityTest.GetIdentity())
                using (var trust = new SecTrust(id.Certificate, SecPolicy.CreateBasicX509Policy()))
                    using (var peer = new MCPeerID("me")) {
                        SecCertificate [] certs = new SecCertificate [trust.Count];
                        for (int i = 0; i < trust.Count; i++)
                        {
                            certs [i] = trust [i];
                        }

                        using (var s = new MCSession(peer, id, certs, MCEncryptionPreference.Required)) {
                            Assert.AreSame(s.MyPeerID, peer, "MyPeerID");
                            // it's a self-signed certificate that's used for the identity
                            // so it's not added twice to the collection being returned
                            Assert.That(s.SecurityIdentity.Count, Is.EqualTo((nuint)1), "SecurityIdentity");
                            Assert.That(s.SecurityIdentity.GetItem <SecIdentity> (0).Handle, Is.EqualTo(certs [0].Handle), "SecurityIdentity");
                            Assert.That(s.EncryptionPreference, Is.EqualTo(MCEncryptionPreference.Required), "EncryptionPreference");
                            Assert.That(s.ConnectedPeers, Is.Empty, "ConnectedPeers");
                        }
                    }
        }
 /// <summary>
 /// Initializes a new instance of the
 /// <see cref="U3DXT.iOS.Multipeer.SessionStartedReceivingResourceWithNameEventArgs"/> class.
 /// </summary>
 /// <param name="_session">_session.</param>
 /// <param name="_resourceName">_resource name.</param>
 /// <param name="_peerID">_peer I.</param>
 /// <param name="_progress">_progress.</param>
 public SessionDidReceiveCertificateEventArgs(MCSession _session, object[] _certificate, MCPeerID _peerID, bool _acceptCertificate=true)
 {
     acceptCertificate = _acceptCertificate;
     session = _session;
     certificate = _certificate;
     peerID = _peerID;
 }
示例#9
0
        public NearbyDevicesViewController(IntPtr handle) : base(handle)
        {
            myPhoneName            = "A" + UIKit.UIDevice.CurrentDevice.Name;
            MyPhoneStatus.MyPeerID = myPhoneName;
            myPeerID = new MCPeerID(myPhoneName);

            Session          = new MCSession(myPeerID);
            Session.Delegate = new ChatSessionDelegate(Session);
            //--------------------------------Advertiser----------------------------------------------------
            var emptyDict = new NSDictionary();

            AppDelegate.advertiser          = new MCNearbyServiceAdvertiser(myPeerID, emptyDict, SERVICE_STRING);
            AppDelegate.advertiser.Delegate = new MyNearbyAdvertiserDelegate(this);

            System.Diagnostics.Debug.WriteLine("Starting advertising...");
            AppDelegate.advertiser.StartAdvertisingPeer();
            MyPhoneStatus.IsAdvertising = true;

            ////--------------------------------Browser------------------------------------------------------
            //AppDelegate.browser = new MCNearbyServiceBrowser(myPeerID, SERVICE_STRING);
            //AppDelegate.browser.Delegate = new MyBrowserDelegate(myPeerID, Session);

            //System.Diagnostics.Debug.WriteLine("Starting browsing...");
            //AppDelegate.browser.StartBrowsingForPeers();
            //MyPhoneStatus.IsBrowsing = true;

            CachedPeerStatus.AddRange(AppDelegate.PeerHistoryMonitor.Values);
        }
        public override void FoundPeer(MCNearbyServiceBrowser browser, MCPeerID peerID, NSDictionary info)
        {
            System.Console.WriteLine("MCNearbyServiceBrowserDelegate Found peer " + peerID.DisplayName);

            // Initialize dual purpose object status and cache object for PeerID
            if (!AppDelegate.PeerHistoryMonitor.ContainsKey(peerID.DisplayName))
            {
                AppDelegate.PeerHistoryMonitor.Add(peerID.DisplayName, new PeerMonitorStatus()
                {
                    LastActive = DateTime.UtcNow,
                    PeerID     = peerID
                });
            }


            /*
             *
             * // DEBUG ONLY - this IF statement is commented out while only one machine is a browse
             *  .. in the real world, both machines will be Advertiser and browser.
             *
             * // commented out while testing on two different machines (one is dedicated browser, other is dedicated advertiser... see NearbyDevicesViewController.cs)
             *
             *
             */
            // Connect to server if the hash value is greater
            //if (browser.MyPeerID.GetNativeHash() > peerID.GetNativeHash())
            {
                System.Console.WriteLine("browser ID" + browser.MyPeerID.GetNativeHash());
                System.Console.WriteLine("PeerID " + peerID.GetNativeHash());
                browser.InvitePeer(peerID, session, context, 60);
            }
        }
 /// <summary>
 /// Initializes a new instance of the
 /// <see cref="U3DXT.iOS.Multipeer.SessionStartedReceivingResourceWithNameEventArgs"/> class.
 /// </summary>
 /// <param name="_session">_session.</param>
 /// <param name="_resourceName">_resource name.</param>
 /// <param name="_peerID">_peer I.</param>
 /// <param name="_progress">_progress.</param>
 public SessionStartedReceivingResourceWithNameEventArgs(MCSession _session, string _resourceName, MCPeerID _peerID, U3DXT.iOS.Native.Foundation.NSProgress _progress)
 {
     session = _session;
     resourceName = _resourceName;
     peerID = _peerID;
     progress = _progress;
 }
 public override void DidReceiveData(MCSession session, NSData data, MCPeerID peerID)
 {
     InvokeOnMainThread(() => {
         var alert = new UIAlertView("", data.ToString(), null, "OK");
         alert.Show();
     });
 }
示例#13
0
        public void Ctor_Identity_Certificates()
        {
            if (!TestRuntime.CheckSystemAndSDKVersion(7, 0))
            {
                Assert.Ignore("requires iOS7+");
            }

            using (var id = IdentityTest.GetIdentity())
                using (var trust = new SecTrust(id.Certificate, SecPolicy.CreateBasicX509Policy()))
                    using (var peer = new MCPeerID("me")) {
                        SecCertificate [] certs = new SecCertificate [trust.Count];
                        for (int i = 0; i < trust.Count; i++)
                        {
                            certs [i] = trust [i];
                        }

                        using (var s = new MCSession(peer, id, certs, MCEncryptionPreference.Required)) {
                            Assert.AreSame(s.MyPeerID, peer, "MyPeerID");
                            // it's a self-signed certificate that's used for the identity
                            // so it's not added twice to the collection being returned
                            Assert.That(s.SecurityIdentity.Count, Is.EqualTo(1), "SecurityIdentity");
                            Assert.That(s.SecurityIdentity.GetItem <SecIdentity> (0).Handle, Is.EqualTo(certs [0].Handle), "SecurityIdentity");
                            Assert.That(s.EncryptionPreference, Is.EqualTo(MCEncryptionPreference.Required), "EncryptionPreference");
                            Assert.That(s.ConnectedPeers, Is.Empty, "ConnectedPeers");
                        }
                    }
        }
示例#14
0
 internal static void OnSessionDidChange(MCSession session, MCPeerID peerID, MCSessionState state)
 {
     if (_sessionChangedHandlers != null)
     {
         _sessionChangedHandlers(null, new SessionChangedEventArgs(session, peerID, state));
     }
 }
 void StartMultipeerAdvertiser()
 {
     peer             = new MCPeerID("Player1");
     session          = new MCSession(peer);
     session.Delegate = sessionDelegate;
     assistant        = new MCAdvertiserAssistant(serviceType, dict, session);
     assistant.Start();
 }
 /// <summary>
 /// Initializes a new instance of the
 /// <see cref="U3DXT.iOS.Multipeer.SessionFinishedReceivingResourceWithNameEventArgs"/> class.
 /// </summary>
 /// <param name="_session">_session.</param>
 /// <param name="_resourceName">_resource name.</param>
 /// <param name="_peerID">_peer I.</param>
 /// <param name="_localURL">_local UR.</param>
 /// <param name="_error">_error.</param>
 public SessionFinishedReceivingResourceWithNameEventArgs(MCSession _session, string _resourceName, MCPeerID _peerID, U3DXT.iOS.Native.Foundation.NSURL _localURL, U3DXT.iOS.Native.Foundation.NSError _error)
 {
     session = _session;
     resourceName = _resourceName;
     peerID = _peerID;
     localURL = _localURL;
     error = _error;
 }
示例#17
0
 /// <summary>
 /// Initializes a new instance of the
 /// <see cref="U3DXT.iOS.Multipeer.SessionFinishedReceivingResourceWithNameEventArgs"/> class.
 /// </summary>
 /// <param name="_session">_session.</param>
 /// <param name="_resourceName">_resource name.</param>
 /// <param name="_peerID">_peer I.</param>
 /// <param name="_localURL">_local UR.</param>
 /// <param name="_error">_error.</param>
 public SessionFinishedReceivingResourceWithNameEventArgs(MCSession _session, string _resourceName, MCPeerID _peerID, U3DXT.iOS.Native.Foundation.NSURL _localURL, U3DXT.iOS.Native.Foundation.NSError _error)
 {
     session      = _session;
     resourceName = _resourceName;
     peerID       = _peerID;
     localURL     = _localURL;
     error        = _error;
 }
        public override void LostPeer(MCNearbyServiceBrowser browser, MCPeerID peerID)
        {
            System.Console.WriteLine("MCNearbyServiceBrowserDelegate LOST peer " + peerID.DisplayName);

            // Safe to skip null check in dictionary b/c FoundPeer runs first
            //AppDelegate. PeerHistoryMonitor[peerID.DisplayName].LastError = DateTime.UtcNow;
            //AppDelegate. PeerHistoryMonitor[peerID.DisplayName].LastErrorString = "Lost peer";
        }
示例#19
0
 public override void FoundPeer(MCNearbyServiceBrowser browser, MCPeerID peerID, NSDictionary info)
 {
     if (_platformBluetooth._session != null)
     {
         Debug.WriteLine("### FOUND PEER: " + peerID.DisplayName);
         browser.InvitePeer(peerID, _platformBluetooth._session, null, 30);
         browser.StopBrowsingForPeers();
     }
 }
 void StartMultipeerBrowser()
 {
     peer             = new MCPeerID("Monkey");
     session          = new MCSession(peer);
     session.Delegate = sessionDelegate;
     browser          = new MCBrowserViewController(serviceType, session);
     browser.Delegate = browserDelegate;
     browser.ModalPresentationStyle = UIModalPresentationStyle.FormSheet;
     this.PresentViewController(browser, true, null);
 }
示例#21
0
        /// <summary>
        /// Starts the advertiser assistant.
        /// </summary>
        /// <param name='displayName'>
        /// The display name for the local peer
        /// </param>
        /// <param name='serviceType'>
        /// The type of service to advertise. Must be 1-15 characters long, only ASCII lower case characters.
        /// </param>
        public static void StartAdvertiserAssistant(string displayName, string serviceType)
        {
            _peerId              = new MCPeerID(displayName);
            _session             = new MCSession(_peerId);
            _advertiserAssistant = new MCAdvertiserAssistant(serviceType, null, _session);
            _advertiserAssistant.Start();

            _session.Delegate             = SessionDelegate.instance;
            _advertiserAssistant.Delegate = AdvertiserAssistantDelegate.instance;
        }
示例#22
0
        public void LocalPeer()
        {
            TestRuntime.AssertSystemVersion(PlatformName.iOS, 7, 0, throwIfOtherPlatform: false);
            TestRuntime.AssertSystemVersion(PlatformName.TvOS, 10, 0, throwIfOtherPlatform: false);
            TestRuntime.AssertSystemVersion(PlatformName.MacOSX, 10, 10, throwIfOtherPlatform: false);

            using (var peer = new MCPeerID("myself")) {
                Assert.That(peer.DisplayName, Is.EqualTo("myself"), "DisplayName");
            }
        }
示例#23
0
        public void Defaults()
        {
            TestRuntime.AssertSystemVersion(PlatformName.iOS, 7, 0, throwIfOtherPlatform: false);
            TestRuntime.AssertSystemVersion(PlatformName.TvOS, 10, 0, throwIfOtherPlatform: false);
            TestRuntime.AssertSystemVersion(PlatformName.MacOSX, 10, 10, throwIfOtherPlatform: false);

            using (var peer = new MCPeerID()) {
                Assert.Null(peer.DisplayName, "DisplayName");
            }
        }
示例#24
0
        public void Defaults()
        {
            TestRuntime.AssertSystemVersion(ApplePlatform.iOS, 7, 0, throwIfOtherPlatform: false);
            TestRuntime.AssertSystemVersion(ApplePlatform.TVOS, 10, 0, throwIfOtherPlatform: false);
            TestRuntime.AssertSystemVersion(ApplePlatform.MacOSX, 10, 10, throwIfOtherPlatform: false);

            using (var peer = new MCPeerID("MyDisplayName")) {
                Assert.AreEqual("MyDisplayName", peer.DisplayName, "DisplayName");
            }
        }
示例#25
0
        public void Defaults()
        {
            if (!TestRuntime.CheckSystemAndSDKVersion(7, 0))
            {
                Assert.Ignore("requires iOS7+");
            }

            using (var peer = new MCPeerID()) {
                Assert.Null(peer.DisplayName, "DisplayName");
            }
        }
示例#26
0
        /// <summary>
        /// Shows the default iOS7.0 Browser view that enables users to invite nearby devices to a session.
        /// </summary>
        /// <param name='displayName'>
        /// The display name for the local peer
        /// </param>
        /// <param name='serviceType'>
        /// The type of service to browse for. Must be 1-15 characters long, only ASCII lower case characters.
        /// </param>
        public static void ShowBrowser(string displayName, string serviceType)
        {
            _peerId             = new MCPeerID(displayName);
            _session            = new MCSession(_peerId);
            _browserVC          = new MCBrowserViewController(serviceType, _session);
            _browserVC.Delegate = BrowserViewControllerDelegate.instance;
            _session.Delegate   = SessionDelegate.instance;


            UIApplication.deviceRootViewController.PresentViewController(_browserVC, false, null);
        }
示例#27
0
        public void LocalPeer()
        {
            if (!TestRuntime.CheckSystemAndSDKVersion(7, 0))
            {
                Assert.Ignore("requires iOS7+");
            }

            using (var peer = new MCPeerID("myself")) {
                Assert.That(peer.DisplayName, Is.EqualTo("myself"), "DisplayName");
            }
        }
示例#28
0
 public void LostPeer(MCNearbyServiceBrowser browser, MCPeerID peerID)
 {
     DispatchQueue.MainQueue.DispatchAsync(() =>
     {
         var removed = this.games.FirstOrDefault(game => game.Host.PeerId != peerID);
         if (removed != null)
         {
             this.games.Remove(removed);
             this.Delegate?.SawGames(this, new List <NetworkGame>(this.games));
         }
     });
 }
示例#29
0
        public void Ctor_OptionalIdentity()
        {
            TestRuntime.AssertSystemVersion(PlatformName.iOS, 7, 0, throwIfOtherPlatform: false);
            TestRuntime.AssertSystemVersion(PlatformName.MacOSX, 10, 10, throwIfOtherPlatform: false);

            using (var peer = new MCPeerID("me"))
                using (var s = new MCSession(peer, null, MCEncryptionPreference.None)) {
                    Assert.AreSame(s.MyPeerID, peer, "MyPeerID");
                    Assert.Null(s.SecurityIdentity, "SecurityIdentity");
                    Assert.That(s.EncryptionPreference, Is.EqualTo(MCEncryptionPreference.None), "EncryptionPreference");
                    Assert.That(s.ConnectedPeers, Is.Empty, "ConnectedPeers");
                }
        }
示例#30
0
        internal static void StartConversation(MCSession session, MCPeerID peerID, MCSessionState state)
        {
            // do you have data to send?
            // Do I have data to send to you?
            // IF no to both, let's check back in within X minutes.

            NSError error = null;

            session.SendData(NSData.FromString("hi"), session.ConnectedPeers, MCSessionSendDataMode.Reliable, out error);
            if (error != null)
            {
                AppDelegate.PeerHistoryMonitor[peerID.DisplayName].LastSendDataError = error;
            }
        }
示例#31
0
        public void Ctor_OptionalIdentity()
        {
            if (!TestRuntime.CheckSystemAndSDKVersion(7, 0))
            {
                Assert.Ignore("requires iOS7+");
            }

            using (var peer = new MCPeerID("me"))
                using (var s = new MCSession(peer, null, MCEncryptionPreference.None)) {
                    Assert.AreSame(s.MyPeerID, peer, "MyPeerID");
                    Assert.Null(s.SecurityIdentity, "SecurityIdentity");
                    Assert.That(s.EncryptionPreference, Is.EqualTo(MCEncryptionPreference.None), "EncryptionPreference");
                    Assert.That(s.ConnectedPeers, Is.Empty, "ConnectedPeers");
                }
        }
示例#32
0
        public void Ctor_Identity()
        {
            TestRuntime.AssertSystemVersion(PlatformName.iOS, 7, 0, throwIfOtherPlatform: false);
            TestRuntime.AssertSystemVersion(PlatformName.MacOSX, 10, 10, throwIfOtherPlatform: false);

            using (var id = IdentityTest.GetIdentity())
                using (var peer = new MCPeerID("me"))
                    using (var s = new MCSession(peer, id, MCEncryptionPreference.Required)) {
                        Assert.AreSame(s.MyPeerID, peer, "MyPeerID");
                        Assert.That(s.SecurityIdentity.Count, Is.EqualTo((nuint)1), "SecurityIdentity");
                        Assert.That(s.SecurityIdentity.GetItem <SecIdentity> (0).Handle, Is.EqualTo(id.Handle), "SecurityIdentity");
                        Assert.That(s.EncryptionPreference, Is.EqualTo(MCEncryptionPreference.Required), "EncryptionPreference");
                        Assert.That(s.ConnectedPeers, Is.Empty, "ConnectedPeers");
                    }
        }
示例#33
0
        public void CtorPeer()
        {
            if (!TestRuntime.CheckSystemAndSDKVersion(7, 0))
            {
                Assert.Ignore("requires iOS7+");
            }

            using (var peer = new MCPeerID("me"))
                using (var s = new MCSession(peer)) {
                    Assert.AreSame(s.MyPeerID, peer, "MyPeerID");
                    Assert.Null(s.SecurityIdentity, "SecurityIdentity");
                    var pref = UIDevice.CurrentDevice.CheckSystemVersion(9, 0) ? MCEncryptionPreference.Required : MCEncryptionPreference.Optional;
                    Assert.That(s.EncryptionPreference, Is.EqualTo(pref), "EncryptionPreference");
                    Assert.That(s.ConnectedPeers, Is.Empty, "ConnectedPeers");
                }
        }
示例#34
0
 /// <summary>
 /// Initializes a new instance of the <see cref="U3DXT.iOS.Multipeer.SessionChangedEventArgs"/> class.
 /// </summary>
 /// <param name="_session">_session.</param>
 /// <param name="_peerID">_peer I.</param>
 /// <param name="_state">_state.</param>
 public SessionChangedEventArgs(MCSession _session, MCPeerID _peerID, MCSessionState _state)
 {
     session = _session;
     peerID = _peerID;
     state = _state;
 }
 public override void DidStartReceivingResource(MCSession session, string resourceName, MCPeerID fromPeer, NSProgress progress)
 {
 }
 public override void DidReceiveStream(MCSession session, NSInputStream stream, string streamName, MCPeerID peerID)
 {
 }
示例#37
0
 public override void DidFinishReceivingResourceWithName(MCSession session, string resourceName, MCPeerID peerID, U3DXT.iOS.Native.Foundation.NSURL localURL, U3DXT.iOS.Native.Foundation.NSError error)
 {
     MultipeerXT.OnSessionDidFinishReceivingResourceWithName(session, resourceName, peerID, localURL, error);
 }
示例#38
0
 public override void DidStartReceivingResourceWithName(MCSession session, string resourceName, MCPeerID peerID, U3DXT.iOS.Native.Foundation.NSProgress progress)
 {
     MultipeerXT.OnSessionDidStartReceivingResourceWithName(session, resourceName, peerID, progress);
 }
示例#39
0
 internal static void OnSessionDidRecieve(MCSession session, U3DXT.iOS.Native.Foundation.NSData data, MCPeerID peerID)
 {
     if (_sessionReceivedHandlers != null)
         _sessionReceivedHandlers(null, new SessionReceivedEventArgs(session, data, peerID));
 }
示例#40
0
 internal static void OnSessionDidChange(MCSession session, MCPeerID peerID, MCSessionState state)
 {
     if (_sessionChangedHandlers != null)
         _sessionChangedHandlers(null, new SessionChangedEventArgs(session, peerID, state));
 }
示例#41
0
        /// <summary>
        /// Shows the default iOS7.0 Browser view that enables users to invite nearby devices to a session.
        /// </summary>
        /// <param name='displayName'>
        /// The display name for the local peer
        /// </param>
        /// <param name='serviceType'>
        /// The type of service to browse for. Must be 1-15 characters long, only ASCII lower case characters.
        /// </param>
        public static void ShowBrowser(string displayName, string serviceType)
        {
            _peerId = new MCPeerID(displayName);
            _session = new MCSession(_peerId);
            _browserVC = new MCBrowserViewController(serviceType, _session);
            _browserVC.Delegate = BrowserViewControllerDelegate.instance;
            _session.Delegate = SessionDelegate.instance;

            UIApplication.deviceRootViewController.PresentViewController(_browserVC, false, null);
        }
示例#42
0
        internal static bool OnSessionDidReceiveCertificate(MCSession session, object[] certificate, MCPeerID peerID)
        {
            SessionDidReceiveCertificateEventArgs certArgs = new SessionDidReceiveCertificateEventArgs(session, certificate, peerID);

            if (_sessionDidReceiveCertificateHandlers != null)
                _sessionDidReceiveCertificateHandlers(null, certArgs);

            return certArgs.acceptCertificate;
        }
示例#43
0
 public override void DidReceive(MCSession session, U3DXT.iOS.Native.Foundation.NSData data, MCPeerID peerID)
 {
     MultipeerXT.OnSessionDidRecieve(session, data, peerID);
 }
示例#44
0
 /// <summary>
 /// Initializes a new instance of the <see cref="U3DXT.iOS.Multipeer.SessionReceivedEventArgs"/> class.
 /// </summary>
 /// <param name="_session">_session.</param>
 /// <param name="_data">_data.</param>
 /// <param name="_peerID">_peer I.</param>
 public SessionReceivedEventArgs(MCSession _session, U3DXT.iOS.Native.Foundation.NSData _data, MCPeerID _peerID)
 {
     session = _session;
     data = _data;
     peerID = _peerID;
 }
示例#45
0
 /*
  * always return certicate to be accept
  */
 public override bool DidReceiveCertificate(MCSession session, object[] certificate, MCPeerID peerID)
 {
     return MultipeerXT.OnSessionDidReceiveCertificate(session, certificate, peerID);
 }
示例#46
0
        /// <summary>
        /// Starts the advertiser assistant.
        /// </summary>
        /// <param name='displayName'>
        /// The display name for the local peer
        /// </param>
        /// <param name='serviceType'>
        /// The type of service to advertise. Must be 1-15 characters long, only ASCII lower case characters.
        /// </param>
        public static void StartAdvertiserAssistant(string displayName, string serviceType)
        {
            _peerId = new MCPeerID(displayName);
            _session = new MCSession(_peerId);
            _advertiserAssistant = new MCAdvertiserAssistant(serviceType, null, _session);
            _advertiserAssistant.Start();

            _session.Delegate = SessionDelegate.instance;
            _advertiserAssistant.Delegate = AdvertiserAssistantDelegate.instance;
        }
 void StartMultipeerAdvertiser()
 {
     peer = new MCPeerID ("Player1");
     session = new MCSession (peer);
     session.Delegate = sessionDelegate;
     assistant = new MCAdvertiserAssistant (serviceType, dict, session);
     assistant.Start ();
 }
示例#48
0
 internal static void OnSessionDidFinishReceivingResourceWithName(MCSession session, string resourceName, MCPeerID peerID, U3DXT.iOS.Native.Foundation.NSURL localURL, U3DXT.iOS.Native.Foundation.NSError error)
 {
     if (_sessionFinishedReceivingResourceWithNameHandlers != null)
         _sessionFinishedReceivingResourceWithNameHandlers(null,
              new SessionFinishedReceivingResourceWithNameEventArgs(session, resourceName, peerID, localURL, error));
 }
 void StartMultipeerBrowser()
 {
     peer = new MCPeerID ("Monkey");
     session = new MCSession (peer);
     session.Delegate = sessionDelegate;
     browser = new MCBrowserViewController (serviceType, session);
     browser.Delegate = browserDelegate;
     browser.ModalPresentationStyle = UIModalPresentationStyle.FormSheet;
     this.PresentViewController (browser, true, null);
 }
示例#50
0
 internal static void OnSessionDidStartReceivingResourceWithName(MCSession session, string resourceName, MCPeerID peerID, U3DXT.iOS.Native.Foundation.NSProgress progress)
 {
     if (_sessionStartedReceivingResourceWithNameHandlers != null)
         _sessionStartedReceivingResourceWithNameHandlers(null,
              new SessionStartedReceivingResourceWithNameEventArgs(session, resourceName, peerID, progress));
 }
 public override void DidChangeState(MCSession session, MCPeerID peerID, MCSessionState state)
 {
     switch (state) {
     case MCSessionState.Connected:
         Console.WriteLine ("Connected: {0}", peerID.DisplayName);
         break;
     case MCSessionState.Connecting:
         Console.WriteLine ("Connecting: {0}", peerID.DisplayName);
         break;
     case MCSessionState.NotConnected:
         Console.WriteLine ("Not Connected: {0}", peerID.DisplayName);
         break;
     }
 }
示例#52
0
    private void SessionChanged(object sender, SessionChangedEventArgs e)
    {
        Log("Session Changed " + e.state);

        if (e.state == U3DXT.iOS.Native.MultipeerConnectivity.MCSessionState.Connected )
        {
            Log("CONNECTED");

            string path = Application.temporaryCachePath+"/u3dxt.jpg";
            // create some arbitary binary data. or load from existing location
            FileStream someFile = new FileStream(path, FileMode.Create);
            someFile.WriteByte(0x42);
            someFile.Close();

            path = "http://u3dxt.com/wp-content/uploads/2013/06/gears_14662320_s-225x225.jpg";
            _session = e.session;
            _peerId = e.peerID;
            _session.SendResourceAtURL(new U3DXT.iOS.Native.Foundation.NSURL(path), "u3dxt.jpg", e.peerID,  sendResourceCompleted);
        }
    }
 public override void DidFinishReceivingResource(MCSession session, string resourceName, MCPeerID formPeer, NSUrl localUrl, NSError error)
 {
     error = null;
 }
 public override void DidReceiveData(MCSession session, NSData data, MCPeerID peerID)
 {
     InvokeOnMainThread (() => {
         var alert = new UIAlertView ("", data.ToString (), null, "OK");
         alert.Show ();
     });
 }
示例#55
0
 public override void DidChange(MCSession session, MCPeerID peerID, MCSessionState state)
 {
     MultipeerXT.OnSessionDidChange(session, peerID, state);
 }