iOS Development Notification (Notification) QuickStart and push notification implementation TutorialsTags: nsnotificationcenternsnotification2016-11-14 00:18 232 People read comments (0) favorite reports Classification:IOS (+)
Reprinted from: http://www.111cn.NET/sj/ios8/90190.htm
Notification (Notification) is an implementation of the observer pattern in the development framework, which is supported by the cocoa framework and is typically used to try to interact with the controller and the data model. Notifications enable you to send messages to one or more objects.
Inherit from NSObject, implement the Nscopying protocol protocol.
Notifications are broadcast to other objects through notification hubs (Nsnotificationcenter). The notification contains a name (name), an object property, and an optional dictionary (dictionary attribute) of three parameters. These parameters assist in the completion of the notification operation.
the principle of notification
Notification an object is very simple, is poster to provide observer information package. The Notification object has two important member variables: Name and object. The general name is used to uniquely indicate a notification object, and object is a pointer to the sender (poster) (to allow observer to call back to poster when notification is received), so notification has two methods:-( NSString *) name,-(ID) object is available for invocation. At the same time, the notification object also contains a parameter, which is a dictionary (optional parameter), which stores some information in the process of passing the value for the recipient to use. The system requires this parameter to be an immutable dictionary.
Once the above information is built, we can create a notification.
Nsnotification *notification = nil;
notification = [nsnotification notificationwithname:aname object:aobj userinfo:adictionary];
Where Aname is the name of the notification object, Aobj is the sender, and adictionary is the optional dictionary parameter for the notification.
When the notification is created, the notification can be sent when necessary, and when the notification is sent, a control center is required to send the notification, and the control center is the Notification Center (nsnotificationcenter). We can also create and send notifications through the control center, which is usually what we do.
practical use of notifications
1. Page is not very relevant, but need to pass the information. These two pages as a sender, one as a listener;
2. Information needs to be sent to multiple locations. A page as the sender, multiple pages as listeners.
How to use notifications
1. Registration Notice
2. Send Notifications
3. Remove Notifications
Code Implementation
Create a Viewcontroller and change it to MRC. Operate inside the. m file.
Read the registration Notice first
-(void) Viewdidload {
[Super Viewdidload];
UIView *mainview = [[[UIView Alloc]initwithframe:[uiscreen mainscreen].bounds]autorelease];
Self.view = MainView;
UIButton *redbutton = [UIButton buttonwithtype:uibuttontyperoundedrect];
Redbutton.frame = CGRectMake (100, 100, 100, 30);
[Redbutton settitle:@ "Red" forstate:uicontrolstatenormal];
[Redbutton addtarget:self Action: @selector (Setredcolor) forcontrolevents:uicontroleventtouchupinside];
[Self.view Addsubview:redbutton];
UIButton *bluebutton = [UIButton buttonwithtype:uibuttontyperoundedrect];
[BlueButton settitle:@ "Blue" forstate:uicontrolstatenormal];
Bluebutton.frame = CGRectMake (100, 150, 100, 30);
[BlueButton addtarget:self Action: @selector (Setbluecolor) forcontrolevents:uicontroleventtouchupinside];
[Self.view Addsubview:bluebutton];
/**
* Registration Notice
*/
[[Nsnotificationcenter Defaultcenter] addobserver:self selector: @selector (dochange:) name:@ "Colorchange" Object:nil ];
}
Send Notifications
-(void) setbluecolor{
/**
* Send Notifications
*/
Nsdictionary *dic = [nsdictionary dictionarywithobject:@ "Bluecolor" forkey:@ "color"];
[[Nsnotificationcenter Defaultcenter] postnotificationname:@ "Colorchange" object:self userInfo:dic];
}
-(void) setredcolor{
/**
* Send Notifications
*/
Nsdictionary *dic = [nsdictionary dictionarywithobject:@ "Redcolor" forkey:@ "color"];
[[Nsnotificationcenter defaultcenter]postnotificationname:@ "Colorchange" object:self userInfo:dic];
}
-(void) Dochange: (nsnotification *) notification{
Nsdictionary *dic = [notification UserInfo];
NSString *colorstr = [dic valueforkey:@ "Color"];
Uicolor *color = nil;
if ([Colorstr isequaltostring:@ "Bluecolor"]) {
color = [Uicolor Bluecolor];
}
if ([Colorstr isequaltostring:@ "Redcolor"]) {
color = [Uicolor Redcolor];
}
Self.view.backgroundColor = color;
}
Remove notifications
-(void) dealloc{
/**
* Remove Notifications
*/
[[Nsnotificationcenter defaultcenter]removeobserver:self];
[Super Dealloc];
}
The implementation results are as follows. Click on the Red screen to turn red, click Blue, and the screen turns blue.
Implementation of simple push notifications (push Notification) on iOS
1. Understanding the Apple Push notification mechanism
From the flowchart above, you can see an app that can receive push notifications, which requires 3 things:
App ID (uniquely identifies an app program)
Provisioning profile (app release requires it, so push notifications can only be tested on the real machine)
Device Token (which is unique to the push notification feature)
The server side that can push notifications is 2 things:
SSL Certificate
Private Key
(because I am not clear about the information encryption, so here does not explain)
It is important to note that the APNs (Applepush Notification Service) Server completes the function of sending device token and notification content, and the 2 actions are passive, that is, the first action was initiated by the app, The second is the server that initiated the push notification.
For me, there is so much to understand. Below I follow the reference article for the experiment.
2. Create App ID
After clicking on the "New App ID" button, the following
Description content can be arbitrary, bundle Identifier (app ID Suffix) must and the bundle Identifier when creating the app project, as follows
Click "Submit", click on the left navigation "app IDs" to find the newly created app ID, as follows
After clicking "Configure", the following
Tick "Enable for Apple Push Notification Service" and then click the Red "Configure" button, where you only get the certificate for development temporarily. A dialog box pops up, as follows
After clicking "Continue", we will upload a CSR file as follows
Use the Keychain Access (keychainaccess) application below to create the required CSR file (. certsigningrequest file)
3. Create a CSR file
Keychain access is located in the/Applications/Utilities directory, open it as follows
Then the popup window is as follows.
UserEmail address feel free to write, Common name is the same, note tick "Save to Disks", and then click "Continue". Quickly generate the required files to find it.
Go back to the page below and upload the Helloremotenotification.certsigningrequest file that you just created with keychainaccess.
Soon the required certificate will be OK, as follows
Click "Continue" and then click "Done".
Found the status above is enabled, and more "Download" button, click on it, download a file called "Aps_development.cer". Double-click to open it,
Locate the private key named "Helloremotenotification" in the "Keys" column (Note that private key, not public key), right-click on it and select "Export" Helloremotenotification "..." to export a. p12 file (requires a password) as follows (3 files in total)
The following starts with the. p12 file that you just created, creating a profile provision file
4. Create a Provisioningprofile file
In the, click on the "New profile" button, as follows
Fill in "Profile Name"; tick "Certificate"; " APP ID "Select the correct, previously created ID, i.e. pushnotification; the last association needs to test the true machine device. Click "Submit", as follows
Can see more than one provisioning profile file, click the "Download" button to download it, then we produced a total of 4 files, as follows
Double-click the "pushnotification.mobileprovision" file, or drag it into Xcode.
In Xcode, locate the code signing entry, for example, to drag a debug configuration powertrain into the provisioning profile corresponding iphone Developer.
5. Get device Token in Xcode project
In the Application:didfinishlaunchingwithoptions: method, register to use remote notification.
Add 2 methods, Application:didregisterforremotenotificationswithdevicetoken: and application: Didfailtoregisterforremotenotificationswitherror: Used to obtain device token and print errors. Run our built Helloremotenotification project, if the above steps are correct, you should print out device Token, as follows
There may also be errors such as
6. Create a. pem file
Convert an existing. cer file to a. pem file
Convert existing. p12 files to. pem file (password required)
Finally, merge the above 2. pem files into 1. pem files (you need to enter a new password)
APS_DEVELOPMENT.CER->HELLOREMOTENOTIFICATION.PEM (renamed as HELLOREMOTENOTIFICATIONCERT.PEM below)
Helloremotenotification.p12-> Helloremotenotificationkey.pem
Helloremotenotification.pem +helloremotenotificationkey.pem merged into CK2.PEM
7, write PHP server code, send notifications
<?php
Put your device token here (without spaces):
$deviceToken = ' Device token> ' of the <xcode console output;
Put your private key ' s passphrase here:
$passphrase = ' < last password entered > ';
Put your alert message here:
$message = ' My first push notification! ';
////////////////////////////////////////////////////////////////////////////////
$ctx = Stream_context_create ();
Stream_context_set_option ($ctx, ' SSL ', ' Local_cert ', ' Ck2.pem ');
Stream_context_set_option ($ctx, ' SSL ', ' passphrase ', $passphrase);
Open a connection to the APNS server
$fp = Stream_socket_client (
' ssl://gateway.sandbox.push.apple.com:2195 ', $err,
$errstr, stream_client_connect|. Stream_client_persistent, $ctx);
if (! $fp)
Exit ("Failed to connect: $err $errstr". PHP_EOL);
Echo ' Connected to APNS '. Php_eol;
Create the payload body
$body [' aps '] = Array (
' Alert ' = $message,
' Sound ' = ' default '
);
Encode the payload as JSON
$payload = Json_encode ($body);
Build the binary notification
$msg = Chr (0). Pack (' n ', 32). Pack (' h* ', $deviceToken). Pack (' n ', strlen ($payload)). $payload;
Send it to the server
$result = fwrite ($fp, $msg, strlen ($msg));
if (! $result)
Echo ' Message not delivered '. Php_eol;
Else
Echo ' Message successfully delivered '. Php_eol;
Close the connection to the server
Fclose ($FP);
Note: Modify the following two lines of code
Put your private key ' s passphrase here:
$passphrase = ' < last password entered > ';
......
......
Stream_context_set_option ($ctx, ' SSL ', ' Local_cert ', ' Ck2.pem ');
Run the above PHP script, as follows
You can see the push notifications received on the ipad, as below, to show that the practice is successful!
-
Top
-
0
-
Step
-
0
IOS development Notification (Notification) QuickStart and push notification implementation tutorials