public bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
 {
     Debug.WriteLine("=== FinishedLaunching ===");
     // Override point for customization after application launch.
     // If not required for your application you can safely delete this method
     RegisterForRemoteNotifications();
     if (launchOptions == null)
     {
         //注册apns远程推送
         launchOptions = new NSDictionary();
     }
     BPush.RegisterChannel(launchOptions, ApiKey, BPushMode.Development, "open", "close", "test", false, true);
     return(true);
 }
        public void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken)
        {
            Debug.WriteLine("=== RegisteredForRemoteNotifications ===");
            byte[] dataBytes = new byte[deviceToken.Length];
            System.Runtime.InteropServices.Marshal.Copy(deviceToken.Bytes, dataBytes, 0, Convert.ToInt32(deviceToken.Length));
            StringBuilder builder = new StringBuilder();

            foreach (var b in dataBytes)
            {
                builder.AppendFormat("{0:X2}", b);
            }
            var token = builder.ToString();

            BPush.RegisterDeviceToken(deviceToken);
            BPush.BindChannelWithCompleteHandler(new BPushCallBack(BindChannel));

            void BindChannel(NSObject result, NSError error)
            {
                if (error != null)
                {
                    return;
                }
                if (result != null)
                {
                    // 确认绑定成功
                    var c = result.ValueForKey(new NSString("error_code"));
                    if (c is NSNumber ic && ic.Int32Value != 0)
                    {
                        return;
                    }
                    var channelId = BPush.ChannelId;

                    BPush.ListTagsWithCompleteHandler(ListTags);

                    void ListTags(NSObject nsresult, NSError nserror)
                    {
                    }

                    BPush.SetTag("tag", SetTag);

                    void SetTag(NSObject nsresult, NSError nserror)
                    {
                    }
                }
            }
        }