예제 #1
0
 /// <summary>
 /// 分享一段文字
 /// </summary>
 /// <param name="shareContent">参数array注释</param>
 /// <param name="isWXSceneTimeline">true:分享到朋友圈;false:分享给好友</param>
 /// <returns>无</returns>
 public void ShareText(string shareContent, bool isWXSceneTimeline)
 {
     if (!TextUtils.IsEmpty(shareContent))
     {
         WXTextObject textObj = new WXTextObject()
         {
             Text = shareContent,
         };
         WXMediaMessage msg = new WXMediaMessage()
         {
             MyMediaObject = textObj,
             Description   = shareContent,
         };
         SendMessageToWX.Req req = new SendMessageToWX.Req()
         {
             Transaction = buildTransaction("text"),
             Message     = msg,
             Scene       = isWXSceneTimeline ? WECHAT_SHARE_TYPE_FRENDS
                 : WECHAT_SHARE_TYPE_TALK,
         };
         mWXApi.SendReq(req);
     }
 }
예제 #2
0
        //文字类型分享
        private void BtnText_Click(object sender, EventArgs e)
        {
            //初始化一个WXTextObject对象,填写分享的文本内容
            WXTextObject textObj = new WXTextObject();

            textObj.Text = "Hello Xamarin";

            //用WXTextObject对象初始化一个WXMediaMessage对象
            WXMediaMessage msg = new WXMediaMessage();

            msg.MyMediaObject = textObj;
            msg.Description   = "Hello World";

            //构造一个Req请求
            SendMessageToWX.Req req = new SendMessageToWX.Req();
            //唯一的请求标志
            req.Transaction = System.Guid.NewGuid().ToString();
            req.Message     = msg;
            req.Scene       = SendMessageToWX.Req.WXSceneSession;

            //发送数据
            api.SendReq(req);
        }
예제 #3
0
        /// <summary>
        /// 分享文字信息
        /// </summary>
        /// <param name="msg">显示在微信聊天记录的信息</param>
        /// <param name="description">显示在按[分享]时候的信息</param>
        /// <returns>返回记录</returns>
        public bool SendMsg(string msg, string description = "", WXScene scene = 0)
        {
            // 初始化一个 WXTextObject 对象,填写分享的文本内容
            WXTextObject textObj = new WXTextObject();

            textObj.Text = msg;

            // 用 WXTextObject 对象初始化一个 WXMediaMessage 对象
            WXMediaMessage wxMediaMessage = new WXMediaMessage();

            wxMediaMessage.MyMediaObject = textObj;
            wxMediaMessage.Description   = description;

            SendMessageToWX.Req req = new SendMessageToWX.Req();

            req.Transaction = System.Guid.NewGuid().ToString(); // 唯一的请求标志
            req.Message     = wxMediaMessage;

            // req.Scene = SendMessageToWX.Req.WXSceneSession; // 发送信息
            // req.Scene = SendMessageToWX.Req.WXSceneTimeline; // 发送朋友圈
            req.Scene = (int)scene;

            return(api.SendReq(req));
        }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource   = Resource.Layout.Toolbar;

            base.OnCreate(savedInstanceState);

            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);

            MessagingCenter.Subscribe <object>(this, PubSubMessage.Register, d =>
            {
                var result = RegToWx();

                MessagingCenter.Send(new object(), PubSubMessage.Registered, result);
            });
            MessagingCenter.Subscribe <object>(this, PubSubMessage.ShareToFriend, d =>
            {
                var text = "这是Xamarin发送到微信朋友的消息!";
                //初始化一个 WXTextObject 对象,填写分享的文本内容
                var textObj = new WXTextObject
                {
                    Text = text
                };

                //用 WXTextObject 对象初始化一个 WXMediaMessage 对象
                var msg = new WXMediaMessage
                {
                    TheMediaObject = textObj,
                    Description    = text
                };

                var req = new SendMessageToWX.Req()
                {
                    Transaction = DateTime.Now.ToFileTimeUtc().ToString(),
                    Message     = msg,
                    Scene       = SendMessageToWX.Req.WXSceneSession//分享到对话
                };

                //调用api接口,发送数据到微信
                wxApi.SendReq(req);
            });
            MessagingCenter.Subscribe <object>(this, PubSubMessage.ShareToFavourite, d =>
            {
                var text = "这是Xamarin发送到微信收藏的消息!";
                //初始化一个 WXTextObject 对象,填写分享的文本内容
                var textObj = new WXTextObject
                {
                    Text = text
                };

                //用 WXTextObject 对象初始化一个 WXMediaMessage 对象
                var msg = new WXMediaMessage
                {
                    TheMediaObject = textObj,
                    Description    = text
                };

                var req = new SendMessageToWX.Req()
                {
                    Transaction = DateTime.Now.ToFileTimeUtc().ToString(),
                    Message     = msg,
                    Scene       = SendMessageToWX.Req.WXSceneFavorite//分享到收藏
                };

                //调用api接口,发送数据到微信
                wxApi.SendReq(req);
            });
            MessagingCenter.Subscribe <object>(this, PubSubMessage.ShareToTimeline, d =>
            {
                var text = "这是Xamarin发送到微信朋友圈的消息!";
                //初始化一个 WXTextObject 对象,填写分享的文本内容
                var textObj = new WXTextObject
                {
                    Text = text
                };

                //用 WXTextObject 对象初始化一个 WXMediaMessage 对象
                var msg = new WXMediaMessage
                {
                    TheMediaObject = textObj,
                    Description    = text
                };

                var req = new SendMessageToWX.Req()
                {
                    Transaction = DateTime.Now.ToFileTimeUtc().ToString(),
                    Message     = msg,
                    Scene       = SendMessageToWX.Req.WXSceneTimeline//分享到朋友圈
                };

                //调用api接口,发送数据到微信
                wxApi.SendReq(req);
            });
            //var wxBroadcastReceiver = new WxBroadcastReceiver(wxApi, appId);
            //RegisterReceiver(wxBroadcastReceiver, new IntentFilter(ConstantsAPI.ActionRefreshWxapp));

            LoadApplication(new App());
        }
예제 #5
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource   = Resource.Layout.Toolbar;

            Resources.DisplayMetrics.ScaledDensity = 2;//告诉android不要把自己大小单位缩放
            //double systemDensity = DeviceDisplay.MainDisplayInfo.Density;
            //Resources.DisplayMetrics.Density = (float)systemDensity / 2.55F;
            //var temp = Resources.DisplayMetrics;
            //var device = DeviceDisplay.MainDisplayInfo;
            App.ScreenWidth  = Resources.DisplayMetrics.WidthPixels;
            App.ScreenHeight = Resources.DisplayMetrics.HeightPixels;

            if (Build.VERSION.SdkInt >= BuildVersionCodes.Kitkat)
            {
                //透明状态栏
                //Window.AddFlags(WindowManagerFlags.TranslucentStatus);
                Window.SetStatusBarColor(Android.Graphics.Color.LightGray);
                //不遮挡导航栏
                Window.AddFlags(WindowManagerFlags.ForceNotFullscreen);
            }

            Rg.Plugins.Popup.Popup.Init(this, savedInstanceState); //弹出框
            CarouselViewRenderer.Init();                           //轮播图
            CachedImageRenderer.Init(true);

            //支付宝
            MessagingCenter.Subscribe <object, string>(this, "Pay", (sender, sign) =>
            {
                try
                {
                    //Func<string, string> test = Pay;
                    //IAsyncResult asyncResult = test.BeginInvoke(sign, null, null);
                    //string result = test.EndInvoke(asyncResult);
                    //
                    //Console.WriteLine(result);
                    //Status = "";
                    Thread the = new Thread(new ParameterizedThreadStart(Pay));
                    the.Start(sign);
                    //the.Join();
                    //Console.WriteLine(Pay(sign));

                    //Task<string> task = new Task<string>(async () => await Pay(sign));
                    //var result = await Pay(sign);
                    //task.Wait();
                    //task.RunSynchronously();
                    //Console.WriteLine(result);

                    //PayDelegate payDelegate = Pay;
                    //Task<string> task = Task<string>.Factory.FromAsync(payDelegate.BeginInvoke(sign, Callback, "a delegate asynchronous call"), payDelegate.EndInvoke);
                    //Task<string> task = Task<string>.Factory.FromAsync(payDelegate.BeginInvoke, payDelegate.EndInvoke, sign, "a delegate asynchronous call");
                    //task.ContinueWith(t => MessagingCenter.Send(new object(), "PaySuccess", t.Result));
                }
                catch (ThreadAbortException)
                {
                    MessagingCenter.Send(new object(), "PaySuccess", Status);
                }
            });

            //微信相关
            //注册
            MessagingCenter.Subscribe <object>(this, "Register", d =>
            {
                var result = RegToWx();
                // MessagingCenter.Send(new object(), "Registered", result);//广播注册的结果
            });

            MessagingCenter.Subscribe <object>(this, "Login", d =>
            {
                // send oauth request
                SendAuth.Req req = new SendAuth.Req();
                req.Scope        = "snsapi_userinfo";
                req.State        = "wechat_sdk_demo_test";
                bool result      = wxApi.SendReq(req);
            });

            //分享小程序给朋友
            MessagingCenter.Subscribe <object, string>(this, "ShareMiniProgramToFriend", (sender, arg) =>
            {
                WXMiniProgramObject miniProgramObj = new WXMiniProgramObject();
                miniProgramObj.WebpageUrl          = "http://www.qq.com";                        // 兼容低版本的网页链接
                miniProgramObj.MiniprogramType     = WXMiniProgramObject.MiniptogramTypeRelease; // 正式版:0,测试版:1,体验版:2
                miniProgramObj.UserName            = "******";                          // 小程序原始id
                miniProgramObj.Path = "/pages/media";                                            //小程序页面路径;对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"

                WXMediaMessage msg = new WXMediaMessage(miniProgramObj);
                msg.Title          = "小程序消息Title";           // 小程序消息title
                msg.Description    = "小程序消息Desc";            // 小程序消息desc
                //msg.ThumbData = getThumb();                      // 小程序消息封面图片,小于128k

                SendMessageToWX.Req req = new SendMessageToWX.Req
                {
                    //Transaction = DateTime.Now.ToFileTimeUtc().ToString(),
                    Message = msg,
                    Scene   = SendMessageToWX.Req.WXSceneSession // 目前只支持会话
                };

                wxApi.SendReq(req);
            });

            //分享文字给朋友
            MessagingCenter.Subscribe <object, string>(this, "ShareToFriend", (sender, arg) =>
            {
                WXTextObject textObj = new WXTextObject {
                    Text = arg
                };                                                     //定义wx文本对象
                WXMediaMessage msg = new WXMediaMessage {
                    MyMediaObject = textObj, Description = arg
                };                                                                                     //定义wxmsg对象
                SendMessageToWX.Req req = new SendMessageToWX.Req()
                {
                    Transaction = DateTime.Now.ToFileTimeUtc().ToString(),
                    Message     = msg,
                    Scene       = SendMessageToWX.Req.WXSceneSession//分享到对话
                };
                wxApi.SendReq(req);
            });
            //分享文字到朋友圈
            MessagingCenter.Subscribe <object, string>(this, "ShareToTimeline", (sender, arg) =>
            {
                WXTextObject textObj = new WXTextObject {
                    Text = arg
                };                                                     //定义wx文本对象
                WXMediaMessage msg = new WXMediaMessage {
                    MyMediaObject = textObj, Description = arg
                };                                                                                     //定义wxmsg对象
                SendMessageToWX.Req req = new SendMessageToWX.Req()
                {
                    Transaction = DateTime.Now.ToFileTimeUtc().ToString(),
                    Message     = msg,
                    Scene       = SendMessageToWX.Req.WXSceneTimeline//分享到朋友圈
                };
                wxApi.SendReq(req);
            });

            /*
             * //分享网页给朋友
             * MessagingCenter.Subscribe<object, string>(this, "ShareToFriend", (sender, arg) =>
             * {
             *  //初始化一个WXWebpageObject,填写url
             *  WXWebpageObject webpage = new WXWebpageObject();
             *  webpage.WebpageUrl = "网页url";
             *
             *  //用 WXWebpageObject 对象初始化一个 WXMediaMessage 对象
             *  WXMediaMessage msg = new WXMediaMessage(webpage);
             *  msg.Title = "网页标题 ";
             *  msg.Description = "网页描述";
             *  Bitmap thumbBmp = BitmapFactory.decodeResource(getResources(), R.drawable.send_music_thumb);
             *  msg.ThumbData = Util.bmpToByteArray(thumbBmp, true);
             *
             *  //构造一个Req
             *  SendMessageToWX.Req req = new SendMessageToWX.Req();
             *  req.Transaction = buildTransaction("webpage");
             *  req.Message = msg;
             *  req.Scene = mTargetScene;
             *  req.UserOpenId = getOpenId();
             *
             *  //调用api接口,发送数据到微信
             *  wxApi.sendReq(req);
             * });*/

            base.OnCreate(savedInstanceState);
            Instance = this;
            Platform.Init(this, savedInstanceState); // add this line to your code, it may also be called: bundle
            Forms.Init(this, savedInstanceState);

            LoadApplication(new App());
        }